Dividi il file in più file piccoli, separati dal simbolo di nuova riga


13

Esiste un'utilità che divide il file con il simbolo di nuova riga? ad es. se un file contiene le seguenti righe,

aa
bbb
cccc

Se voglio dividerlo in 3 file, l'output desiderato sarebbe:

aa, bbbE cccc(in 3 file diversi)

Ho già controllato il splitcomando, ha solo tagliato il file in base alle dimensioni del file, non quello che voglio.

Se non ho scritto da solo un'utilità, c'è uno strumento standard da usare?


quale dovrebbe essere il nome file?
Rahul Patil,

vuoi creare un file per ogni riga? Ho ragione?
Rahul Patil,

Risposte:


14

A meno che non mi manchi qualcosa, splitdividi per riga se usi -lswitch:

   -l, --lines=NUMBER
          put NUMBER lines per output file

così

split -l 1 inputfile

dovrebbe fare quello che vuoi.


4
awk '{print > $0".txt" }'  inputfile

creerebbe un file per riga univoca nel file di input che prende il nome dal contenuto di quelle righe (con .txtun'estensione). Ma attenzione che quando viene raggiunto il limite di file aperti simultanei, alcune awkimplementazioni falliranno.

O

awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile

Per avere file di output numerati.


Potresti voler chiudere () il file di output dopo che è stato scritto, altrimenti ti imbatterai nel limite massimo di file aperti con la maggior parte delle implementazioni awk.
Stéphane Chazelas,

non ne sono consapevole .. puoi farlo per me? grazie ..
Rahul Patil,

3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.