echo "abc" >>file.txtmenempatkan baris baru setelahnya abc , bukan sebelumnya. Jika Anda berakhir dengan abcbarisnya sendiri, itu berarti baris baru sebelumnya abcsudah 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.