desplegando un archivo en Linux
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?
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