Standart ile sed, bir dosyadan okunan metinde hiçbir zaman yeni satır görmezsiniz. Bunun nedeni sedsatır satır okur ve bu nedenle seddesen satırında geçerli satırın metninin sonunda yeni satır yoktur . Başka bir deyişle, sedyeni satırla sınırlandırılmış verileri okur ve sınırlayıcılar bir sedkomut 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
-EBurada anahtarı kullanmadım çünkü gerekli değil. Bununla beraber, yazabilirdin
$ sed -E 's/[A-Za-z]+$/replace/' file.txt
Bu bir zevk meselesi.