2011-08-18 15 views
22

Jak mogę dostać drugą linię w pliku przy użyciu SEDJak dostać tylko drugiej linii SED

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

z danymi, które wygląda jak wyżej Chcę tylko dostać

GATTTCTGGCCCGCCGCTCGATAATACAGTAATTCC 

Odpowiedz

35

naprawdę nie potrzebują Sed, ale jeśli Cele wprowadzanych jest nauczyć ... można użyć -n

n czytać następną linię wejściową i rozpoczyna przetwarzanie przełamane ze zamiast polecenia pierwszego polecenia

sed -n 2p somefile.txt 

Edit: można również poprawić wydajność przy użyciu końcówki że manatwork wspomina w swoim komentarzu:

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

Jeśli masz pewność, że po linii 2 nie będzie już linii 2, możesz zaoszczędzić trochę czasu, wykonując 'q'uiting po' p'rinting: 'sed -n '2 {p; q}' somefile.txt' . – manatwork

+1

Zobacz "odniesienie" na ten temat: http://www.grymoire.com/Unix/Sed.html#uh-33 – sehe

+0

Dobra robota @Manatwork i bardzo ciekawy samouczek. +1 dla obu. – Jonathan

15

zawsze chcesz drugiej linii pliku? Nie potrzeba SED:

head -2 file | tail -1 
+0

Wymaga to 2 procesów zamiast jednego z sed. Więc z punktu widzenia wydajności sed jest lepszy. – jfg956

+0

@jfgagne Nie jestem pewien. Czy porównałeś go? – HongboZhu

+0

Bardzo ciekawe rozwiązanie. Kciuk w górę! – HongboZhu

9

ta zostanie wydrukowany drugi wiersz każdego pliku:

awk 'FNR==2' 

i ten jeden tylko druga linia pierwszego pliku:

awk 'NR==2' 
4

ten może pracować dla Ciebie:

sed '2q;d' file 
1
cat your_file | head -2 | tail -1 
Powiązane problemy