2012-10-02 29 views
6

Tengo un ejemplo [archivo] que quiero tomar las líneas 3-6 y las líneas 11-13, luego ordenar con un comando de una línea y guardarlo como 3_6-11_13. Estos son los comandos que he utilizado hasta ahora, pero no han conseguido el resultado deseado:seleccionar varias líneas usando el comando linux sed

sed -n '/3/,/6/p'/11/,/13/p file_1 > file_2 | sort -k 2 > file_2 & sed -n 3,6,11,13p file_1 > file_2 | sort -k 2 file_2. 

¿Hay una mejor manera de acortar esto. He pensado en usar awk, pero me he quedado con sed hasta ahora.

Respuesta

11

Con sed se le permite especificar direcciones por número de este modo:

sed -n '3,6p' 

El -n es para mantener sed desde la salida de impresión automática.

continuación, puede ejecutar varios comandos si utiliza gsed mediante la separación de esos comandos con punto y coma:

sed -n '3,6p; 11,13p' | sort -k2 > 3_6-11_13 
+0

Gracias Tim Pote. Usé una versión ligeramente modificada de lo que sugirió. De hecho, intenté con lo que sugirió anteriormente ese día, pero seguí recibiendo un mensaje de error al usar un punto y coma después de '3,6p ;. Gracias de nuevo. – demet8

1

SED combinan varios comandos usando la opción -e

$ sed -e 'comm' -e 'comm' file.txt 

o se puede separar comandos utilizando el punto y coma

$ sed 'comm;comm;comm' file.txt 
+0

Gracias b3h3m0th. – demet8

Cuestiones relacionadas