it-swarm.com.de

Drucken Sie jede n-te Zeile aus einer großen Datei in eine neue Datei

Ich versuche, jede n-te Zeile aus einer Datei mit mehr als 300.000 Datensätzen in eine neue Datei zu drucken. Dies muss bei jedem N-ten Datensatz geschehen, bis das Ende der Datei erreicht ist.

15
Terisa
awk 'NR % 5 == 0' input > output

Dies druckt jede fünfte Zeile.

So verwenden Sie eine Umgebungsvariable:

NUM=5
awk -v NUM=$NUM 'NR % NUM == 0' input > output
30
Deathgrip
sed -n -e '5{p;q}' yourfile > newfile

Wobei N = 5 als Beispiel für Ihren Fall.

Der Befehl sed lautet wie folgt: -n bedeutet "standardmäßig keine Zeilen drucken"; Führen Sie dann in Zeile 5 eine Menge { ... } von Befehlen; Diese Befehle sind: print die Zeile, dann quit.

2
Jeff Schaller

Ähnlich wie bei sed haben wir auch awk:

$ seq 1000000000 |awk 'NR==500000{print;exit}'
500000

NR = Anzahl der Zeilen, die gedruckt werden sollen (und dann beenden, um zu vermeiden, dass die Datei fertig ist). In Ihrem Fall

awk 'NR==Nth{print;exit}' inputfile >outputfile

Wobei Nth die N-te Zeilennummer ist, die Sie drucken müssen.

1
George Vasiliou