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 --unbufferedopción, pero eso pareció hacerlo más lento y no permitió que terminara correctamente.
trpara traducir }en \ny luego usar sedpara 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=unblocklo haría, pero rara vez es así de simple.