Команда sed (Stream Editor) у Linux — це потужний інструмент для обробки тексту та редагування файлів. Вона дозволяє користувачам шукати, замінювати, вставляти та видаляти текст у файлах, що робить її незамінною для автоматизації та написання скриптів. У цьому керівництві ми розглянемо, як використовувати команду sed для оновлення файлів у Linux із практичними прикладами.


Чому варто використовувати команду Sed?

Команда sed широко застосовується для:

Заміни тексту – Просте заміщення слів, фраз або шаблонів у файлах.
Обробки декількох файлів – Зміна одразу кількох файлів за допомогою скриптів.
Ефективності – Швидке редагування великих файлів без їх відкриття.
Редагування «на льоту» – Модифікація файлів прямо з командного рядка.
Автоматизації – Використання у скриптах для обробки тексту.


Основний синтаксис команди Sed

Загальний синтаксис команди sed:

sed [ОПЦІЇ] 's/старий-текст/новий-текст/g' ім'я_файлу

Де:

  • s – Позначає заміну.
  • старий-текст – Текст, який потрібно замінити.
  • новий-текст – Новий текст.
  • g – (глобально) Замінює всі входження в рядку.
  • ім’я_файлу – Файл, у якому виконується заміна.

Як використовувати команду Sed для оновлення файлів

1. Заміна слова у файлі

Щоб замінити слово у файлі, використовуйте:

sed 's/Linux/Ubuntu/g' file.txt

Ця команда замінить перше входження “Linux” на “Ubuntu” у кожному рядку file.txt.

2. Заміна всіх входжень у файлі

Щоб замінити всі входження слова глобально:

sed 's/Linux/Ubuntu/g' file.txt

Флаг g гарантує заміну кожного входження у рядку.

3. Редагування файлу напряму (зміна файлу на місці)

Щоб внести зміни безпосередньо у файл без виведення на екран:

sed -i 's/Linux/Ubuntu/g' file.txt

Флаг -i вмикає редагування файлу без створення його копії.

4. Заміна тексту лише у певних рядках

Щоб змінити текст лише у певному рядку файлу:

sed '3s/Linux/Ubuntu/' file.txt

Ця команда замінює “Linux” на “Ubuntu” лише у рядку 3.

5. Видалення рядка, що містить певний текст

Щоб видалити всі рядки, що містять певне слово:

sed '/непотрібний-текст/d' file.txt

Ця команда видалить усі рядки, що містять “непотрібний-текст”.

6. Видалення певного рядка за номером

Щоб видалити рядок за його номером:

sed '5d' file.txt

Ця команда видаляє рядок 5 у file.txt.

7. Вставка рядка перед певним рядком

Щоб додати рядок перед певним номером рядка:

sed '3i\Це новий рядок' file.txt

Ця команда вставляє “Це новий рядок” перед рядком 3.

8. Вставка рядка після певного рядка

Щоб вставити рядок після певного номеру рядка:

sed '3a\Це доданий рядок' file.txt

Ця команда додає “Це доданий рядок” після рядка 3.

9. Заміна слова у декількох файлах

Щоб замінити текст одразу у кількох файлах:

sed -i 's/Linux/Ubuntu/g' *.txt

Ця команда змінює всі файли .txt у поточній директорії, замінюючи “Linux” на “Ubuntu”.


Розширені команди Sed

1. Використання декількох команд Sed одночасно

Щоб виконати одразу кілька замін у файлі:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Сервер/Хмара/g' file.txt

Ця команда замінює “Linux” на “Ubuntu” і “Сервер” на “Хмара” у file.txt.

2. Використання Sed з регулярними виразами

Щоб замінити всі цифри у файлі:

sed 's/[0-9]/#/g' file.txt

Ця команда замінює всі цифри символом #.

3. Витягнення певних рядків із файлу

Щоб відобразити рядки з 5-го по 10-й:

sed -n '5,10p' file.txt

Флаг -n запобігає виведенню всього файлу, відображаючи лише рядки 5-10.


Найкращі практики при використанні Sed

🔹 Завжди створюйте резервну копію файлів перед використанням -i – це допоможе уникнути втрати даних.
🔹 Використовуйте регулярні вирази – потужний інструмент для складних замін.
🔹 Перевіряйте команди перед внесенням змін – спершу запустіть sed без -i, щоб переглянути результат.
🔹 Використовуйте скрипти для автоматизації – поєднуйте sed зі скриптами оболонки для масової обробки файлів.


Висновок

Команда sed — це потужний та ефективний інструмент для оновлення файлів у Linux. Опанувавши sed, ви зможете автоматизувати обробку текстових файлів і спростити адміністрування системи.