найти и заменить на sed с косой чертой в строке поиска и замены

Прелесть Linux / Unix в том, что обычно существует несколько способов чего-то добиться. В случае с оператором существует как минимум четыре различных способа извлечь имя POP-сервера из файла:

  1. grep POP3_SERVER_NAME installation.sh | cut -d '=' -f2
  2. grep POP3_SERVER_NAME installation.sh | awk '{print $ 3}'
  3. grep POP3_SERVER_NAME installation.sh | sed 's /.*= //'
  4. sed -n 's /^.* POP3_SERVER_NAME = // p' installation.sh
6
19.07.2017, 02:58
1 ответ

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

sed -i 's!pattern!replacement!g' /path/to/file

Но если нет удобного символа для использования вместо /в качестве разделителя, вы также можете избежать любых встроенных символов-разделителей в ваших patternи replacement, поставив перед каждым из них обратную косую черту \. Вот пример использования /в качестве разделителя, который заменяет /some/pathна../some/replacement:

sed -i 's/\/some\/path/..\/some\/replacement/g'

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

sed -i 's!/some/path!../some/replacement!g'
6
27.01.2020, 20:20

Теги

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