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
? Здоров'я!