echo "abc" >>file.txt
menempatkan baris baru setelahnya abc
, bukan sebelumnya. Jika Anda berakhir dengan abc
barisnya sendiri, itu berarti baris baru sebelumnya abc
sudah ada di file.txt
.
Perhatikan bahwa sangat normal bagi file teks untuk mengakhiri baris baru. Pada unix, baris terdiri dari urutan karakter selain null⁰ atau baris baru diikuti oleh baris baru. 1 Oleh karena itu file teks yang tidak kosong diakhiri dengan karakter baris baru.
Jika Anda ingin menambahkan teks ke baris terakhir file, maka Anda tidak dapat melakukannya dengan >>
, karena ini selalu ditambahkan ke file, jadi selalu menulis setelah baris baru terakhir. Sebagai gantinya Anda membutuhkan alat yang mampu memodifikasi file yang ada. Misalnya, Anda dapat menggunakan sed :
sed '$ s/$/abc/' file.txt >file.txt.new && mv file.txt.new file.txt
Dalam perintah sed, yang pertama $
berarti "lakukan perintah berikut hanya di baris terakhir", perintah itu s/REGEX/REPLACEMENT/
menggantikan REGEX dengan REPLACEMENT, dan persamaan reguler $
cocok di akhir baris.
Perintah sed Linux memiliki fitur bawaan untuk mengotomatiskan urutan buat-file-dan-ganti baru ini, sehingga Anda dapat mempersingkatnya menjadi
sed -i '$ s/$/abc/' file.txt
⁰ Itu byte nol, yang panggilan ASCII NUL dan panggilan Unicode U + 0000. Program pemrosesan teks mungkin atau mungkin tidak mengatasi karakter ini.
1 Lihat definisi File Teks , Baris , dan Karakter Baris Baru di bagian "Definisi" pada bab Definisi Dasar dari IEEE 1003.1-2008: 2016.