2012-10-02 9 views
6

Ich habe ein Beispiel [Datei], die ich ergreifen möchte Zeilen 3-6 und Zeilen 11 - 13 dann mit einem einzeiligen Befehl sortieren und speichern Sie es als 3_6-11_13. Dies sind die Befehle, die ich bisher verwendet habe, aber ich habe nicht die gewünschte Ausgabe erhalten:wählen Sie mehrere Zeilen mit dem Linux-Befehl 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. 

Gibt es eine bessere Möglichkeit, dies zu verkürzen. Ich habe über die Verwendung von Awk gedacht, aber ich bin bisher bei sed geblieben.

Antwort

11

Mit sed verwenden sind Sie Adressen wie so durch Nummer angeben erlaubt:

sed -n '3,6p' 

Die -n ist zu behalten sed vom automatischen Ausdruck der Ausgabe.

Dann können Sie mehrere Befehle ausführen, wenn Sie gsed verwenden sind durch diese Befehle mit Semikolons zu trennen:

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

Danke Tim Pote. Ich habe eine leicht modifizierte Version von dem verwendet, was Sie vorgeschlagen haben. Ich hatte tatsächlich versucht, was Sie früher am Tag vorgeschlagen, aber ich bekam immer einen Fehler zu tun, nicht ein Semikolon nach '3,6p; Danke noch einmal. – demet8

1

sed kombinieren mehrere Befehle -e Option

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

oder Sie können Befehle trennen das Semikolon

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

Danke b3h3m0th. – demet8

Verwandte Themen