## Использование команды SED для редактирования текстовых файлов
**Введение**
В мире Linux и других Unix-подобных операционных систем, работа с текстовыми файлами является фундаментальной частью многих задач. От конфигурационных файлов до журналов, текстовые файлы являются основой многих процессов. Команда `sed`, потоковый редактор, является мощным инструментом для обработки и преобразования текстовых данных. Она позволяет выполнять широкий спектр операций, от простого поиска и замены до сложных манипуляций с текстом, без необходимости открывать файл в текстовом редакторе.
Эта книга призвана предоставить вам исчерпывающее руководство по использованию команды `sed`. Мы начнем с основ и постепенно перейдем к более сложным техникам. Вы узнаете, как использовать `sed` для решения повседневных задач, а также для создания более сложных скриптов.
**1.1. Что такое SED?**
`Sed` (Stream Editor) – это потоковый текстовый редактор, который читает данные из стандартного ввода, обрабатывает их в соответствии с заданными командами и выводит результат в стандартный вывод. Это означает, что `sed` не изменяет исходный файл напрямую (если, конечно, не указано обратное). Вместо этого он создает новую версию данных после обработки.
`Sed` является неинтерактивным редактором, что отличает его от интерактивных редакторов, таких как `vi` или `nano`. Это делает его идеальным для автоматизированных задач, таких как:
* Поиск и замена текста
* Удаление или добавление строк
* Извлечение определенной информации из файла
* Форматирование текста
* Скриптование обработки текстовых данных
**1.2. Базовый синтаксис SED**
Основной синтаксис команды `sed` выглядит следующим образом:
```bash
sed 'команды' файл
```
Где:
* `sed` – команда вызова потокового редактора.
* `'команды'` – одна или несколько команд, которые `sed` должен выполнить над входными данными. Команды заключаются в одинарные кавычки.
* `файл` – имя файла, который `sed` должен обработать. Если файл не указан, `sed` будет читать данные из стандартного ввода.
**1.3. Основные команды SED**
Рассмотрим основные команды `sed`:
* **`p` (print) – печать.** Выводит текущую строку. Используется в сочетании с адресами, для печати только определенных строк.
* **`d` (delete) – удаление.** Удаляет текущую строку.
* **`s` (substitute) – замена.** Заменяет текст.
* **`i` (insert) – вставка.** Вставляет текст перед текущей строкой.
* **`a` (append) – добавление.** Вставляет текст после текущей строки.
* **`c` (change) – изменение.** Заменяет текущую строку на новый текст.
* **`q` (quit) – выход.** Выходит из `sed` после обработки текущей строки.
* **`=` – вывод номера строки.** Выводит номер текущей строки.
**1.4. Адресация строк**
`Sed` может обрабатывать только определенные строки, используя адресацию. Адреса могут быть:
* **Число:** указывает на конкретную строку. Например, `2` означает вторую строку.