Standart ile sed
, bir dosyadan okunan metinde hiçbir zaman yeni satır görmezsiniz. Bunun nedeni sed
satır satır okur ve bu nedenle sed
desen satırında geçerli satırın metninin sonunda yeni satır yoktur . Başka bir deyişle, sed
yeni satırla sınırlandırılmış verileri okur ve sınırlayıcılar bir sed
komut dosyasının gördüklerinin bir parçası değildir .
Düzenli ifadeler olabilir demirlemiş kullanarak satırın sonunda $
(veya başında kullanılarak ^
). Bir ifadeyi satırın başına / sonuna sabitlemek, satırın herhangi bir yerinde değil, tam olarak orada eşleşmesini sağlar.
[A-Za-z]*
Çizginin sonundaki desenle eşleşen herhangi bir şeyi bir şeyle değiştirmek istiyorsanız, deseni şu şekilde sabitleyin:
[A-Za-z]*$
... çizginin sonunda ve başka hiçbir yerde eşleşmeyecek.
Bununla birlikte, hiçbir şeyle[A-Za-z]*$
eşleşmediği için (örneğin, her satırın sonunda bulunan boş dize ), bir şeyin eşleşmesini zorlamanız gerekir , örn.
[A-Za-z][A-Za-z]*$
veya
[A-Za-z]\{1,\}$
Yani, sed komut satırınız böylece
$ sed 's/[A-Za-z]\{1,\}$/replace/' file.txt
-E
Burada anahtarı kullanmadım çünkü gerekli değil. Bununla beraber, yazabilirdin
$ sed -E 's/[A-Za-z]+$/replace/' file.txt
Bu bir zevk meselesi.