Domanda

Voglio dividere una linea 400k lungo file di log da un particolare numero di riga.

Per questa domanda, consente di fare di questo un numero arbitrario 300k.

C'è un comando di Linux che mi permette di fare questo ( all'interno dello script )?

Lo so split mi permette di dividere il file in parti uguali sia per i numeri di dimensioni o di linea ma non è quello che voglio. Voglio il primo 300k in un unico file e l'ultimo 100k nel secondo file.

Qualsiasi aiuto sarebbe apprezzato. Grazie!

Il secondo pensiero questo sarebbe più adatto al sito superutente o serverfault.

È stato utile?

Soluzione

file_name=test.log

# set first K lines:
K=1000

# line count (N): 
N=$(wc -l < $file_name)

# length of the bottom file:
L=$(( $N - $K ))

# create the top of file: 
head -n $K $file_name > top_$file_name

# create bottom of file: 
tail -n $L $file_name > bottom_$file_name

Inoltre, ripensandoci, diviso funzionerà nel tuo caso, dal momento che la prima divisione è più grande del secondo. mette Split il saldo del contributo al ultima divisione, in modo

split -l 300000 file_name

stamperà xaa con 300k linee e xab con 100k linee, per un ingresso con 400k linee.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top