
Я знаю, что на этот вопрос, вероятно, уже отвечали. Я видел много тем об этом в разных местах, но ответы обычно трудно извлечь для меня. Я ищу помощь с примером использования команды '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
означает "глобальный", то есть сделать это для всей строки. Если вы опустите /g
(с s/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
г:Глобальный
с:заменять
-я: в реальном времени работает с файломна месте