Использование «sed» для поиска и замены

Использование «sed» для поиска и замены

Я знаю, что на этот вопрос, вероятно, уже отвечали. Я видел много тем об этом в разных местах, но ответы обычно трудно извлечь для меня. Я ищу помощь с примером использования команды 'sed'.

Допустим, я хочу выполнить действие с файлом "hello.txt" (в том же каталоге, что и prompt). Везде, где он содержит фразу "few", ее следует изменить на "asd". Как будет выглядеть команда?

решение1

sedэтостремредитор, в котором вы можете использовать |(трубу) для отправкистандартные потоки(в частности, STDIN и STDOUT) sedи изменять их программно «на лету», что делает его удобным инструментом в традициях философии Unix; но также может редактировать файлы напрямую, используя параметр, -iуказанный ниже.
Рассмотрим следующее:

sed -i -e 's/few/asd/g' hello.txt

s/используется длясЗаменим найденное выражение fewна asd:

Немногие, но храбрые.


АСД, храбрый.

/gозначает "глобальный", то есть сделать это для всей строки. Если вы опустите /gs/few/asd/, всегда должно быть три косых черты, независимо от того, что) и fewпоявляется дважды в одной строке, только первый fewизменится на asd:

Несколько мужчин, несколько женщин, храбрецы.


Мужчины-АСД, несколько женщин, храбрецы.

Это полезно в некоторых обстоятельствах, например, при изменении специальных символов в начале строк (например, замена символов «больше», которые некоторые люди используют для цитирования предыдущего материала в цепочках электронных писем, на горизонтальную табуляцию, при этом оставляя нетронутым цитируемое алгебраическое неравенство далее в строке), но в вашем примере, где вы указываете, чтов любом месте fewего следует заменить, убедитесь, что он у вас есть /g.

Следующие две опции (флаги) объединены в одну -ie:

-iопция используется для редактированияяn поместить в файл hello.txt.

-eопция указываетевыражение/команда для выполнения, в данном случае s/.

Примечание: Важно, чтобы вы использовали -i -eдля поиска/замены. Если вы это сделаете -ie, вы создадите резервную копию каждого файла с добавленной буквой 'e'.

решение2

sed -i 's/fea/asd/g'  hello.txt

г:Глобальный

с:заменять

: в реальном времени работает с файломна месте

Связанный контент