GNU/Linux >> Linux Esercitazione >  >> Linux

Dividi il file per numero di righe inclusa l'intestazione in ciascuna?

Devo dividere un .txt file in quelli più piccoli contenenti 100 righe ciascuno, inclusa l'intestazione. Non so se questo è rilevante, ma il file originale è delimitato in questo modo:

COLUMN1 | COLUMN2 | COLUMN3
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

Ho bisogno che ogni file generato da questa divisione abbia la riga di intestazione. Inoltre, devono essere generati/spostati in un'altra directory e seguire uno schema di nomi, come file_01.txt , file_02.txt , ecc

Risposta accettata:

Con gnu split potresti salvare l'intestazione in una variabile, quindi split a partire dalla 2a riga, utilizzando il --filter opzione per scrivere prima l'intestazione e poi le 99 righe per ogni pezzo e specificare anche la directory di output (ad es. 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_

questo creerà pezzi di 100 righe come

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

Linux
  1. Come stampare le righe numero 15 e 25 su ogni 50 righe?

  2. Numero di righe emesse da Ls?

  3. Come contare il numero di righe in un file dopo una corrispondenza Grep?

  4. Aggiungi un'intestazione a un file delimitato da tabulazioni

  5. Come ottenere solo il numero di righe di un file

Come unire più righe in una in un file in Linux

5 modi per contare il numero di righe in un file

Scrivere su file .txt?

Un comando per creare una directory e un file al suo interno comando linux

Come dividere un file di testo in più file *.txt?

Elenca le righe di un solo file in DIFF