2

Я использую следующую строку perl в одну строку, чтобы добавить WORD в конец последней строки в файле

     perl -p -i -e 's/$/WORD/;' file

Но это добавляет СЛОВО в каждой строке

Как исправить синтаксис perl, чтобы добавить слово только в последней строке файла

пример

  more file

  AAAAA BBB
  WWWWW
  EEEEE WORD

3 ответа3

4

Вы должны определить, что вы достигли конца файла, используя eof:

perl -p -i -e 'eof && s/$/WORD/;'  file
2

Вот эквивалент использования sed:

sed -ie '$s/$/WORD/' file
1

Просто добавьте флаг -0 :

perl -0pie 's/$/WORD/' file

Кстати, я бы никогда не использовал -i без дополнительного расширения. Если ваш Perl не сделает то, что вы хотели, ваш вклад будет потерян. ; это не терминатор операторов в Perl, а разделитель операторов.

perl -i.orig -0pe 's/$/WORD/' file

Еще одна удобная идиома для тестирования:

perl -0pe 's/$/WORD/' file | diff file -

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .