Pregunta

Tengo un gran archivo de texto, aproximadamente 400.000 líneas 80 charachters ancho en liux.

necesidad de "desplegar" el archivo, la fusión de cuatro líneas en una sola terminando tener 1/4 de las líneas, cada línea 80 * 4 charachters largo.

alguna sugerencia?

¿Fue útil?

Solución

Una forma más fácil de hacerlo con awk sería:

awk '{ printf $0 } (NR % 4 == 0) { print }' filename

Aunque si quisiera protegerse de quedarse sin un salto de línea final se pone un poco más complicado:

awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename

Otros consejos

perl -pe 'chomp if (++$i % 4);'

Espero que he entendido bien su pregunta. Tiene una línea de entrada como esta (excepto sus líneas son más largas):

abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF

¿Quieres salida como esta:

abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF

El siguiente programa awk debe hacerlo:

{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }

Ejecutar esta manera:

awk -f merge.awk data.txt
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top