2015-03-07 2 views
-1

У меня есть файл, где несколько строк заканчиваются tux. Как добавить " в конец любой строки, которая заканчивается словами, такими как this или This?Добавить «в конец любой строки, которая заканчивается здесь или с помощью sed в unix

+1

Используйте 'sed'. Пожалуйста, покажите, что вы попробовали, и объясните, почему это не сработало. – Barmar

ответ

1

Вы можете посетить this site дополнительные примеры и справочные материалы о СЭД в целом. Кроме того, проверить это «Регулярные выражения» вкладка или поиск в Интернете что-то вроде «символов Unix анкерных».

для этого фактического проблема, это соответствующие части сайта:

Sed имеет возможность указать, какие строки должны быть проверены и/или изменены, указав адреса перед командой. Сейчас я просто опишу простейшую версию -/PATTERN/address. При использовании только строки, соответствующие шаблону, получают команду после адреса. Короче говоря, при использовании флага/р, соответствующие линии печатаются дважды:

СЭД «/ PATTERN/р» файл

И конечно ОБРАЗЕЦ любое регулярное выражение.

Согласно этим, вы можете использовать SED команды, как это, чтобы получить строки заканчивая «это» или «Это» в файле, или «пингвин», если вы имели в виду, что:

$ sed '/[tT]his$/p' yourfile 

или

$ sed '/tux$/p' yourfile 

для ввода двойных кавычек в конце этих линий, вы также должны понимать:

  • $ имеет особое значение (конец строки ввода) в качестве якорного символа в регулярных выражениях

... и символ «$» конец якоря. Выражение «A $» будет соответствовать всем строкам, заканчивающимся капиталом A. Если якорные символы не используются в правильном конце шаблона, то они больше не выступают в качестве якорей. «$» Является только привязкой, если это последний символ.

  • как использовать СЭД для замены символов (см связанной страницы)

Sed имеет несколько команд, но большинство людей только изучают команду подстановки: с. Команда substitute изменяет все вхождения регулярного выражения в новое значение.Простой пример меняется «день» в «старом» файл в «ночь» в «новой» файла:

$ СЭД «s/день/ночь /» NewFile

Или другим способом (для UNIX для начинающих),

$ СЭДОВ 's/день/ночь /' старого> нового

и для тех, кто хочет проверить это:

$ эха дня | sed 's/день/ночь /'

Это выведет «ночь».

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

$ sed '/[pP]atternAtTheEndOfLine$/s/$/patternToAddToEndOfTheLine/' yourfile 
Смежные вопросы