Bash
Divisione dei file
Ricerca…
introduzione
A volte è utile dividere un file in più file separati. Se hai file di grandi dimensioni, potrebbe essere una buona idea scomporlo in blocchi più piccoli
Dividere un file
L'esecuzione del comando di divisione senza opzioni dividerà un file in 1 o più file separati contenenti fino a 1000 righe ciascuno.
split file
Questo creerà file chiamati xaa
, xab
, xac
, ecc, ciascuno contenente fino a 1000 linee. Come puoi vedere, tutti loro hanno come prefisso la lettera x
di default. Se il file iniziale era inferiore a 1000 righe, sarebbe stato creato un solo file di questo tipo.
Per modificare il prefisso, aggiungi il prefisso desiderato alla fine della riga di comando
split file customprefix
Ora verranno creati i file customprefixaa
, customprefixab
, customprefixac
, ecc
Per specificare il numero di righe da emettere per file, utilizzare l'opzione -l
. Quanto segue dividerà un file in un massimo di 5000 linee
split -l5000 file
O
split --lines=5000 file
In alternativa, è possibile specificare un numero massimo di byte anziché righe. Questo viene fatto usando le opzioni -b
o --bytes
. Ad esempio, per consentire un massimo di 1 MB
split --bytes=1MB file
Possiamo usare sed con l'opzione w per dividere un file in file mutiple. I file possono essere divisi specificando l'indirizzo o il modello di linea.
Supponiamo di avere questo file sorgente che vorremmo dividere:
cat -n sourcefile
1 Sul Ning Nang Nong
2 Dove le mucche vanno Bong!
3 e le scimmie dicono tutti BOO!
4 C'è un Nong Nang Ning
5 Dove vanno gli alberi Ping!
6 E le teiere jibber jabber joo.
7 Sul Nong Ning Nang
Comando per dividere il file per numero di riga:
sed '1,3w f1
> 4,7w f2' sourcefile
Questo scrive da line1 a line3 nel file f1 e da line4 a line7 nel file f2, dal file di origine.
cat -n f1
1 Sul Ning Nang Nong
2 Dove le mucche vanno Bong!
3 e le scimmie dicono tutti BOO!
cat -n f2
1 C'è un Nong Nang Ning
2 Dove vanno gli alberi Ping!
3 E le teiere jibber jabber joo.
4 Sul Nong Ning Nang
Comando per dividere il file in base al contesto / modello:
sed '/Ning/w file1
> /Ping/w file2' sourcefile
Questo divide il file sorgente in file1 e file2. file1 contiene tutte le linee che corrispondono a Ning, file2 contiene linee che corrispondono a Ping.
cat file1
Sul Ning Nang Nong
C'è un Nong Nang Ning
Sul Nong Ning Nang
cat file2
Dove vanno gli alberi Ping!