Bash:
Поиск и замена текста
Как сделать:
Вот как вы можете использовать функцию поиска и замены в bash:
- Заменить текст в строке с помощью
sed
:
echo "Hello world" | sed 's/world/universe/'
# Вывод: Hello universe
- Заменить текст в файле, сохраняя изменения:
sed -i 's/old_text/new_text/g' file.txt
- Использовать переменные в вашем поиске и замене:
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
невероятно мощным, но и немного сложным для освоения.
Смотрите также
man sed
для руководства поsed
- Введение в
sed
- Регулярные выражения для начинающих
- Искусство командной строки для большего количества трюков bash (https://github.com/jlevy/the-art-of-command-line)