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


Навіщо використовувати команду Sed?

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

✅ Заміна тексту – легко замінює слова, фрази або шаблони у файлах.
пакетна обробка – зміна декількох файлів одночасно за допомогою скриптів.
ефективність – швидко обробляє великі файли, не відкриваючи їх.
вбудоване редагування – зміна файлів безпосередньо з командного рядка.
автоматизація – використовується в скриптах для обробки повторюваних змін тексту.


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

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

sed [OPTIONS] 's/old-text/new-text/g' filename

Де:

  • s – Позначає підстановку.
  • old-text – Текст, що замінюється.
  • new-text – Текст на заміну.
  • 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 '/unwanted-text/d' file.txt

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

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

Щоб видалити певний рядок, використовуйте:

sed '5d' file.txt

Це видалить рядок 5 з file.txt.

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

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

sed '3i\This is a new line' file.txt

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

8. Вставка тексту після рядка

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

sed '3a\This is an appended line' 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/Server/Cloud/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 може автоматизувати і спростити ці завдання. Опанувавши sed, ви зможете покращити свій робочий процес і підвищити продуктивність в адмініструванні Linux та написанні сценаріїв.