Як використовувати Sed в Linux

Sed означає редактор потоку. Це редактор командного рядка для Linux. Популярне використання sed для редагування файлів (файлів) як частини сценарію автоматизації в Linux, оскільки звичайні редактори вимагають активного введення користувача і не можуть редагувати файли за межами екранів редактора. Sed найчастіше використовується для пошуку та заміни з командного рядка.

Цей тип текстового редактора також можна віднести до категорії неінтерактивних текстових редакторів.

Давайте подивимося на деякі поширені варіанти редагування файлів за допомогою Sed. Як приклад візьмемо наступний файл:

$: cat test.txt Швидкий коричневий пес перестрибнув через ледачого кота. Операційна система Linux. У Лісі біля мене є кіт, а також вовки. 

Пошук і заміна

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

sed -i "s/cat/fox/g" test.txt

Ось, flag наказує sed записати зміни до файлу. Без цього прапора, sed просто відобразить файл зі зміненим рядком.

У лапках ми маємо с/кішка/лисиця/г. The с призначений для команди пошуку та заміни sed. Тоді ми маємо рядок для пошуку, який є кіт. Потім рядок, на який його замінити, тобто лисиця. Нарешті, у нас є необов’язковий g, який інструктує sed щоб замінити всі входження в усі рядки файлу. Без g, sed замінить лише перше входження кіт на кожному рядку.

Тут також можна використовувати регулярний вираз.

sed -i "s/f[a-z]*\./cat\./g"

Вставити

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

sed -i "/cat/i Початок:" test.txt

тут, кіт є шуканим рядком і Початок: це рядок, який потрібно ввести перед рядком, де знайдено шуканий рядок.

Аналогічно, щоб вставити текст після рядка, використовуйте:

sed -i "/fox/a Кінець." test.txt

Видалити

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

sed -i "/Linux/d" test.txt

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

sed -i '1d' test.txt

Поєднання кількох функцій

Для поєднання кількох функцій, напр. пошук і заміна, видалення однією командою, прапор можна використовувати.

sed -i -e "s/fox/cat/g" -e '2d' test.txt

? Здоров'я!

Категорія: Linux