2011-08-18 32 views
22

Làm thế nào tôi có thể nhận được dòng thứ hai trong một tập tin sử dụng SEDLàm thế nào để có được dòng thứ hai chỉ với SED

@SRR005108.1 :3:1:643:216 
GATTTCTGGCCCGCCGCTCGATAATACAGTAATTCC 
+ 
IIIIII/III*IIIIIIIIII+IIIII;IIAIII%> 

Với các dữ liệu mà trông giống như trên, chúng tôi muốn duy nhất để

GATTTCTGGCCCGCCGCTCGATAATACAGTAATTCC 

Trả lời

35

Bạn không thực sự cần Sed, nhưng nếu pourpose là để tìm hiểu ... bạn có thể sử dụng -n

n đọc những dòng đầu vào tiếp theo và bắt đầu xử lý xuống dòng với lệnh chứ không phải là lệnh đầu tiên

sed -n 2p somefile.txt 

Sửa: Bạn cũng có thể cải thiện hiệu suất sử dụng các mẹo manatwork đề cập trong bình luận của ông:

sed -n '2{p;q}' somefile.txt 
+4

Trong trường hợp bạn chắc chắn sẽ không còn dòng 2 nào sau dòng 2, bạn có thể sử dụng một số xử lý vô nghĩa bằng 'q'uiting sau' p'rinting: 'sed -n' 2 {p; q} 'somefile.txt' . – manatwork

+1

Xem "tham chiếu" về điều này: http://www.grymoire.com/Unix/Sed.html#uh-33 – sehe

+0

Điểm tốt @Manatwork và một sehe hướng dẫn rất thú vị. 1 cho cả hai. – Jonathan

15

Bạn luôn muốn dòng thứ hai của một tập tin? Không cần SED:

head -2 file | tail -1 
+0

Điều này cần 2 quy trình thay vì một quy trình với sed. Vì vậy, trên quan điểm thực hiện, sed là tốt hơn. – jfg956

+0

@jfgagne Tôi không chắc chắn. Bạn đã đánh giá nó? – HongboZhu

+0

Giải pháp rất tò mò. Đưa ngón cái lên! – HongboZhu

9

này sẽ in dòng thứ hai của mỗi file:

awk 'FNR==2' 

và điều này chỉ có dòng thứ hai của tập tin đầu tiên:

awk 'NR==2' 
4

Điều này có thể làm việc cho bạn:

sed '2q;d' file 
1
cat your_file | head -2 | tail -1 
Các vấn đề liên quan