Ich habe nach einer Antwort auf diese Frage gesucht, aber ich musste schließlich meinen eigenen Code schreiben, der funktioniert hat. Keine der obigen Antworten war zufriedenstellend. Nehmen wir an, Sie haben eine sehr große Datei mit bestimmten Zeilennummern, die Sie ausdrucken möchten, aber die Nummern sind nicht in der richtigen Reihenfolge. Sie können wie folgt vorgehen:
Meine relativ große Datei for letter in {a..k} ; do echo $letter; done | cat -n > myfile.txt
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
Ich möchte bestimmte Zeilennummern: shuf -i 1-11 -n 4 > line_numbers_I_want.txt
10
11
4
9
Um diese Zeilennummern zu drucken, gehen Sie wie folgt vor. awk '{system("head myfile.txt -n " $0 " | tail -n 1")}' line_numbers_I_want.txt
Die obige Funktion besteht darin, die Zeile n zu überschreiben und dann die letzte Zeile mit tail zu übernehmen
Wenn Sie die Zeilennummern in der richtigen Reihenfolge haben wollen, sortieren Sie zuerst (mit -n numeric sort) und holen Sie dann die Zeilen.
cat line_numbers_I_want.txt | sort -n | awk '{system("head myfile.txt -n " $0 " | tail -n 1")}'
4 d
9 i
10 j
11 k