Команда sed в Linux: полное руководство по автоматической обработке текста

20.03.2025, 14:00

Команда sed — консольная утилита, которая применяется для: :
→ автоматического редактирования файлов;
→ замены текстовых фрагментов по заданным правилам;
→ удаления, вставки и модификации строк;
→ выполнения сложных сценариев без необходимости ручного вмешательства.

Это делает sed идеальной программой для автоматизации текстовых изменений. 

Будь вы начинающим пользователем Linux или опытным системным администратором, знание sed поможет вам:

→ автоматизировать рутинные задачи, например, массовую замену значений в конфигурационных файлах или логах;
→ ускорить редактирование конфигурационных файлов, позволяя модифицировать параметры без необходимости открывать файлы вручную;
→ упростить работу с текстовыми данными, например, преобразовывать файлы из одного формата в другой.

В этом руководстве мы подробно разберем:
→ синтаксис и команды 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

→ Поиск и замена текста или чисел.
→ Удаление, вставка и изменение строк.
→ Автоматическая обработка файлов и потоков данных.
→ Динамическое изменение содержимого файлов на основе условий.
→ Группировка команд для более сложных сценариев обработки.
→ Возможность обработки нескольких файлов одновременно.

Общий синтаксис команды sed

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 во всём файле.

Динамическая замена чисел с помощью sed

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!