Использование 'sed' для поиска и замены [duplicate]

    

У этого вопроса уже есть ответ:

    

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

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

222 голоса | спросил roo 5 +04002014-10-05T09:25:38+04:00312014bEurope/MoscowSun, 05 Oct 2014 09:25:38 +0400 2014, 09:25:38

2 ответа


445

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

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

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

  

Немного, смелые.

     

Адд, храбрый.

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

  

Немногие мужчины, немногие женщины, храбрые.

     

Мужчины, немногие женщины, храбрые.

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

Следующие два параметра (флаги) объединяются в один, -ie:

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

-e указывает на выполнение e xpression /command, в данном случае s /.

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

ответил Mohammad Etemaddar 5 +04002014-10-05T09:36:44+04:00312014bEurope/MoscowSun, 05 Oct 2014 09:36:44 +0400 2014, 09:36:44
48
sed -i 's /fea /asd /g' hello.txt

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

s: заменить

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

ответил PersianGulf 5 +04002014-10-05T09:38:43+04:00312014bEurope/MoscowSun, 05 Oct 2014 09:38:43 +0400 2014, 09:38:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132