Команда sed — консольная утилита, которая применяется для: :
→ автоматического редактирования файлов;
→ замены текстовых фрагментов по заданным правилам;
→ удаления, вставки и модификации строк;
→ выполнения сложных сценариев без необходимости ручного вмешательства.
Это делает sed идеальной программой для автоматизации текстовых изменений.
Будь вы начинающим пользователем Linux или опытным системным администратором, знание sed поможет вам:
→ автоматизировать рутинные задачи, например, массовую замену значений в конфигурационных файлах или логах;
→ ускорить редактирование конфигурационных файлов, позволяя модифицировать параметры без необходимости открывать файлы вручную;
→ упростить работу с текстовыми данными, например, преобразовывать файлы из одного формата в другой.
В этом руководстве мы подробно разберем:
→ синтаксис и команды sed;
→ способы замены текста и чисел;
→ применение регулярных выражений;
sed — это не просто утилита командной строки, а потоковый текстовый процессор. Его основная особенность заключается в том, что он читается строка за строкой, выполняет заданные операции и выводит результат, не изменяя исходный файл, если это не указано явно.
В отличие от текстовых редакторов, таких как vim или nano, sed работает неинтерактивно. Это означает, что изменения происходят автоматически без необходимости ручного редактирования.
Основа работы sed:
1. Чтение входных данных (файл или поток).
2. Обработка данных по заданным правилам.
3. Вывод данных.
💡 Примечание: По умолчанию sed не изменяет файл. Чтобы сохранить правки, необходимо использовать опцию -i (in-place).
Пример использования sed для редактирования файла in-place:
sed -i 's/old_text/new_text/g' file.txt
Это заменит все вхождения "old_text" на "new_text" прямо в file.txt.
→ Поиск и замена текста или чисел.
→ Удаление, вставка и изменение строк.
→ Автоматическая обработка файлов и потоков данных.
→ Динамическое изменение содержимого файлов на основе условий.
→ Группировка команд для более сложных сценариев обработки.
→ Возможность обработки нескольких файлов одновременно.
sed [option] 'command' file
Разбор синтаксиса:
→ option— параметры, изменяющие поведение sed.
→ command — действие, которое необходимо выполнить (например, замена текста).
→ file— обрабатываемый файл (если не указан, sed читает стандартный ввод).
💡 Важно! Если sed получает данные через echo или cat, он применяет команду к каждой строке по отдельности.
Пример простой замены слова "apple" на "orange":
echo "I like apple pie." | sed 's/apple/orange/'
Вывод:
I like orange pie.
Множественная замена в файле
Если требуется заменить сразу несколько различных фрагментов текста, можно использовать -e для указания нескольких команд:
sed -e 's/apple/orange/g' -e 's/pie/cake/g' файл.txt
Этот пример заменит apple на orange и pie на cake во всём файле.
1. Простая замена числа
Если нужно заменить конкретное число на другое, используем команду s (substitute — замена):
sed 's/old_number/new_number/' файл.txt
Пример замены 100 на 200:
echo "The price is 100 dollars." | sed 's/100/200/'
Вывод:
The price is 200 dollars.
2. Замена всех чисел в строке
Чтобы заменить любое число в строке на заданное значение, используем регулярные выражения:
sed 's/[0-9]\+/0/g' файл.txt
Пример:
echo "The items cost 100, 200, and 300 dollars." | sed 's/[0-9]\+/0/g'
Вывод:
The items cost 0, 0, and 0 dollars.
3. Увеличение всех чисел в строке
Если необходимо увеличить все числа в строке на определенное значение, можно комбинировать sed с bash:
echo "Item 1 costs 100, item 2 costs 200." | sed -E 's/[0-9]+/echo $((\0 + 10))/ge'
Вывод:
Item 1 costs 110, item 2 costs 210.
Использование sed позволяет выполнять сложные операции с текстом, значительно упрощая редактирование и обработку файлов.
💡 Вы узнали:
→ Как использовать sed для поиска и замены текста.
→ Как динамически заменять числа.
→ Как работать с регулярными выражениями.
→ Как изменять файлы in-place.
Теперь вы готовы автоматизировать текстовую обработку в Linux!