Tengo archivos que fueron generados por un programa que no puso nuevas líneas al final de los registros. Quiero poner nuevas líneas entre los registros, y puedo hacerlo con un simple script sed:
sed -e 's/}{/}\n{/g'
El problema es que los archivos de entrada tienen un tamaño de varios gigabytes y, por lo tanto, las líneas de entrada a sed tienen varios GB de longitud. sed intenta mantener una línea en la memoria, lo que no funciona en este caso. Probé la --unbuffered
opción, pero eso pareció hacerlo más lento y no permitió que terminara correctamente.
tr
para traducir }
en \n
y luego usar sed
para agregar una }
al final de cada línea? Así:tr '}' '\n' < your_file.txt| sed 's/$/}/'
printf "\n" >> file
}{
repetidos hasta que sea suficiente con varios gigabytes.
dd if=file cbs=80 conv=unblock
lo haría, pero rara vez es así de simple.