Поиск и замена текста

Bash:
Поиск и замена текста

Как сделать:

Вот как вы можете использовать функцию поиска и замены в bash:

  1. Заменить текст в строке с помощью sed:
echo "Hello world" | sed 's/world/universe/'
# Вывод: Hello universe
  1. Заменить текст в файле, сохраняя изменения:
sed -i 's/old_text/new_text/g' file.txt
  1. Использовать переменные в вашем поиске и замене:
old="apple"
new="banana"
sed "s/$old/$new/g" <<< "I like apple pies"
# Вывод: I like banana pies

Помните, g в конце означает “глобальный”, так что вы меняете каждое совпадение в строке, а не только первое.

Глубже

Мы имеем инструменты для обработки текста в системах, подобных Unix, уже давно. sed, сокращение от Stream Editor, - это один из таких инструментов, и он существует с 1970-х годов. Это не просто для простых замен; sed может нарезать и шинковать текст по сложным шаблонам тоже.

Альтернативы? Конечно. awk немного продвинутее и может творить чудеса с колонками и строками. Для быстрых исправлений grep может помочь вам найти что-то, но не заменить – он больше как разведчик.

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

Смотрите также