2011-08-18 19 views
22

¿Cómo puedo obtener la segunda línea en un archivo usando SEDComo llegar SOLO Segunda línea con SED

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

Con los datos que se parece más arriba quiero sólo para obtener

GATTTCTGGCCCGCCGCTCGATAATACAGTAATTCC 

Respuesta

35

Usted realmente no necesita de sed, pero si el pourpose es aprender ... se puede usar -n

n leer la siguiente línea de entrada y empieza a procesar la nueva línea con el comando en lugar de la primera orden

sed -n 2p somefile.txt 

Editar: también puede mejorar el rendimiento utilizando la punta que manatwork menciona en su comentario:

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

En caso de que esté seguro de que no habrá más líneas 2 después de la línea 2, puede ahorrar un procesamiento inútil al 'q'utilizar después de' p'rinting: 'sed -n '2 {p; q}' somefile.txt' . – manatwork

+1

Consulte "la" referencia en este: http://www.grymoire.com/Unix/Sed.html#uh-33 – sehe

+0

Buen punto @Manatwork, y un tutorial muy interesante. +1 para ambos. – Jonathan

15

Siempre ¿Quieres la segunda línea de un archivo? No hay necesidad de SED:

head -2 file | tail -1 
+0

Esto necesita 2 procesos en lugar de uno con sed. Entonces, desde el punto de vista del rendimiento, sed es mejor. – jfg956

+0

@jfgagne No estoy seguro. ¿Lo comparaste? – HongboZhu

+0

Solución muy curiosa. ¡Pulgar arriba! – HongboZhu

9

Esto imprimirá la segunda línea de cada archivo:

awk 'FNR==2' 

y éste sólo la segunda línea del primer archivo:

awk 'NR==2' 
4

Esto podría funcionar para usted:

sed '2q;d' file 
1
cat your_file | head -2 | tail -1 
Cuestiones relacionadas