заменить последний символ в строке с помощью sed - PullRequest
3 голосов
/ 27 сентября 2011

Я пытаюсь заменить последний символ в строке тем же символом плюс кавычка '

Это код sed

 sed "s/\([A-Za-z]\)$/\1'/g" file1.txt > file2.txt

но не работает. Где ошибка?

Ответы [ 4 ]

7 голосов
/ 27 сентября 2011

попробовать:

sed "s/\([a-zA-Z]\)\s*$/\1\'/" file

Это заменит последний символ в строке, за которым не будет ни одного или нескольких пробелов.

HTH Крис

4 голосов
/ 27 сентября 2011

Кажется бессмысленным заменять символ на себя, поэтому попробуйте это: для строк, заканчивающихся буквой, добавьте кавычку в конце:

sed "/[a-zA-Z]$/s/$/'/"
2 голосов
/ 27 сентября 2011

Это делает то, что вы просите:

sed "s/\(.\)$/\1'/" file1.txt > file2.txt
0 голосов
/ 27 сентября 2011

Ваша строка соответствует только строке с одним символом. Обратите внимание, что операция s вступает в силу только в том случае, если строка соответствует , а не в том случае, если регулярному выражению соответствует только подмножество строки.

...