GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Datei nach Anzahl der Zeilen aufteilen, einschließlich Header in jeder Zeile?

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

erstellt
path to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................

Linux
  1. Zeilen zwischen (und einschließlich) zwei Mustern drucken?

  2. Alle Dateien/Verzeichnisse außer einer Datei entfernen?

  3. Wie drucke ich die Zeilen Nummer 15 und 25 von jeweils 50 Zeilen?

  4. Wie fügt man mehrere Zeilen an eine Datei an?

  5. Zeilen in einer Datei zählen?

So verbinden Sie mehrere Zeilen in einer Datei in Linux zu einer

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Anzahl der von Ls ausgegebenen Zeilen?

Wie zähle ich die Anzahl der Zeilen in einer Datei nach einem Grep-Match?

So zeigen Sie bestimmte Zeilen einer Datei in der Linux-Befehlszeile an

Ein Befehl zum Erstellen eines Verzeichnisses und einer Datei darin Linux-Befehl