Eu tenho arquivos que foram gerados por um programa que não colocou novas linhas no final dos registros. Quero colocar novas linhas entre os registros e posso fazê-lo com um simples script sed:
sed -e 's/}{/}\n{/g'
O problema é que os arquivos de entrada têm vários gigabytes de tamanho e, portanto, as linhas de entrada para sed têm vários GBs de comprimento. sed tenta manter uma linha na memória, o que não funciona nesse caso. Tentei a --unbufferedopção, mas isso pareceu torná-la mais lenta e não permitiu que ela terminasse corretamente.
tra traduzir }em \ne, em seguida, usar sedpara adicionar um }no final de cada linha? Assim:tr '}' '\n' < your_file.txt| sed 's/$/}/'
printf "\n" >> file
}{repetido até que vários gigabytes sejam suficientes.
dd if=file cbs=80 conv=unblockfaria - mas raramente é tão simples assim.