dispiegarsi di un file su linux
Domanda
Ho un file di testo enorme, circa 400.000 linee di 80 charachters su Liux.
Hai bisogno di "spiegare" il file, la fusione di quattro linee in una sola finendo con 1/4 delle linee, ogni linea lungo 80 * 4 charachters.
qualche suggerimento?
Soluzione
Un modo più semplice per farlo con awk sarebbe:
awk '{ printf $0 } (NR % 4 == 0) { print }' filename
Anche se si voleva proteggere finire senza un newline finale diventa un po 'più complicato:
awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename
Altri suggerimenti
perl -pe 'chomp if (++$i % 4);'
Spero ho capito bene la tua domanda. Hai una linea di ingresso come questo (tranne le linee sono più lunghi):
abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF
Si desidera output come questo:
abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF
Il seguente programma awk dovrebbe farlo:
{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }
Esegui in questo modo:
awk -f merge.awk data.txt
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow