Ich muss eine .txt
teilen Datei in kleinere mit jeweils 100 Zeilen, einschließlich Header. Ich weiß nicht, ob das relevant ist, aber die Originaldatei ist wie folgt getrennt:
COLUMN1 | COLUMN2 | COLUMN3
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Ich brauche jede aus dieser Aufteilung generierte Datei, um die Kopfzeile zu haben. Außerdem müssen sie in einem anderen Verzeichnis generiert/in ein anderes Verzeichnis verschoben werden und einem Namensmuster folgen, wie file_01.txt
, file_02.txt
, usw.
Akzeptierte Antwort:
Mit gnu split
Sie könnten den Header in einer Variablen speichern und dann split
ab der 2. Zeile mit dem --filter
Option, zuerst den Header und dann die 99 Zeilen für jedes Stück zu schreiben und auch das Ausgabeverzeichnis anzugeben (z. B. path to/output dir/
):
header=$(head -n 1 infile.txt)
export header
tail -n +2 infile.txt | split -l 99 -d --additional-suffix=.txt
--filter='{ printf %s\n "$header"; cat; } >path to/output dir/$FILE' - file_
Dadurch werden 100-Zeilen-Stücke als
erstelltpath to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................