Saya memiliki file yang dihasilkan oleh program yang tidak menaruh baris baru di akhir catatan. Saya ingin meletakkan baris baru di antara catatan, dan saya bisa melakukannya dengan skrip sed sederhana:
sed -e 's/}{/}\n{/g'
Masalahnya adalah bahwa file input berukuran beberapa gigabytes, dan oleh karena itu jalur input ke sed panjangnya beberapa GB. sed mencoba untuk menahan garis dalam memori, yang tidak berfungsi dalam kasus ini. Saya mencoba --unbuffered
opsi itu, tetapi sepertinya membuatnya lebih lambat dan tidak membiarkannya selesai dengan benar.
tr
untuk menerjemahkan }
ke dalam \n
dan kemudian menggunakan sed
untuk menambahkan }
di akhir setiap baris? Seperti ini:tr '}' '\n' < your_file.txt| sed 's/$/}/'
printf "\n" >> file
}{
diulang sampai beberapa gigabytes akan cukup.
dd if=file cbs=80 conv=unblock
akan melakukannya - tetapi jarang sesederhana itu.