Ho dei file che sono stati generati da un programma che non ha messo le nuove righe alla fine dei record. Voglio mettere nuove righe tra i record e posso farlo con un semplice script sed:
sed -e 's/}{/}\n{/g'
Il problema è che i file di input hanno dimensioni di più gigabyte e quindi le righe di input per sed sono lunghe più GB. sed cerca di mantenere una linea in memoria, che in questo caso non funziona. Ho provato l' --unbufferedopzione, ma questo sembrava rallentarlo e non gli ha permesso di terminare correttamente.
trper tradurre }in \ne poi usare sedper aggiungere un }alla fine di ogni riga? In questo modo:tr '}' '\n' < your_file.txt| sed 's/$/}/'
printf "\n" >> file
}{ripetuti fino a quando non sarà sufficiente diversi gigabyte.
dd if=file cbs=80 conv=unblocklo farebbe, ma raramente è così semplice.