echo "abc" >>file.txt
sonra abc
değil , bir satırsonu koyar . Eğer abc
kendi çizgisiyle sonuçlanırsanız , bu daha önce yeni satırın abc
zaten mevcut olduğu anlamına gelir file.txt
.
Bir metin dosyasının yeni satırla bitmesinin tamamen normal olduğunu unutmayın. Unix'te, bir satır null⁰ veya satırsonu dışında bir karakter dizisinden sonra bir satırsonu içerir. 1 Bu nedenle boş olmayan herhangi bir metin dosyası yeni satır karakteri ile biter.
Bir dosyanın son satırına metin eklemek istiyorsanız, bunu yapamazsınız >>
, çünkü bu her zaman dosyaya eklenir , bu nedenle her zaman son satırdan sonra yazar. Bunun yerine mevcut bir dosyayı değiştirebilecek bir araca ihtiyacınız var. Örneğin, sed kullanabilirsiniz :
sed '$ s/$/abc/' file.txt >file.txt.new && mv file.txt.new file.txt
Sed komutunda birincisi $
, “yalnızca son satırda aşağıdaki komutu yap” anlamına gelir, komut s/REGEX/REPLACEMENT/
REGEX'i REPLACEMENT ile değiştirir ve normal ifade $
satırın sonunda eşleşir.
Linux'un sed komutu, bu yeni dosya oluştur ve değiştir dizisini otomatikleştirmek için yerleşik bir özelliğe sahiptir, böylece
sed -i '$ s/$/abc/' file.txt
⁰ ASCII'nin NUL ve Unicode'un U + 0000'ı çağırdığı boş bir bayt. Metin işleme programları bu karakterle başa çıkabilir veya olmayabilir.
1 tanımlarını gör Metin Dosyası , Hat ve satır karakteri "Tanımlar" bölümünde Baz Tanımları IEEE 1.003,1-2008 bölüm: 2016.