sed

Як замінити кілька рядків за допомогою команди 'sed'

Як замінити кілька рядків за допомогою команди 'sed'
Іноді потрібно замінити кілька рядків файлу будь-яким певним символом або текстом. У Linux існують різні команди для заміни декількох рядків файлу. Команда 'sed' є однією з них для виконання такого типу завдань. Повною формою 'sed' є Steam Editor, і вона в основному використовується для читання та перетворення тексту різними способами за допомогою регулярного виразу. Як ця команда може бути використана для заміни декількох рядків файлу різними способами, пояснюється в цьому посібнику.

Широко використовувана шпаргалка "sed":

Найчастіше використовувані символи, що використовуються в команді 'sed', пояснюються в наступній таблиці.

Характер Призначення
a Він використовується для додавання вмісту.
b Він використовується для розгалуження вмісту.
c Він використовується для зміни вмісту.
d Застосовується для видалення рядка файлу.
D Застосовується для видалення першого рядка файлу.
g Раніше він копіював із тексту холдингу.
G Він використовується для додавання до тексту холдингу.
h Він використовується для копіювання в тексті холдингу.
H Він використовується для додавання до тексту утримання.
i Він використовується для вставки.
Я Він використовується для друку замісного рядка.
п Він використовується для переходу до наступного рядка.
N Він використовується для додавання наступного рядка введення.
стор Він використовується для друку.
P На ньому друкується перший рядок.
q Застосовується для відмови.
Питання Застосовується для негайної відмови.
р Він використовується для читання файлу.
Р Він використовується для читання рядка з файлу.
s Він використовується для заміщення.
т Він використовується для тестування на заміну.
Т Він використовується для перевірки відсутності заміни.
w Він використовується для запису у файл.
W Він використовується для запису рядка у файл.
х Він використовується для обміну шаблонами та утримання.
р Він використовується для перекладу.
z Застосовується для очищення лінії.
'=' Він використовується для друку номера рядка.

Замініть кілька рядків за допомогою команди 'sed' з терміналу:

Як команда "sed" може бути використана для заміни декількох рядків із файлу з терміналу, показано в цій частині цього посібника. Створіть файл з іменем sed.txt з наступним змістом перевірити команди цієї частини.

sed.txt

Повна форма sed - це "редактор потоку".

Це утиліта Unix, яка використовується для читання та перетворення тексту в іншому форматі.

Він був розроблений Лі Е. Макмехон.

Він використовується для обробки тексту.

Він підтримує регулярні вирази.

Приклад-1: Замініть дві послідовні лінії

Наступна команда 'sed' замінить два послідовні рядки іншим рядком. Тут параметр -z використовується для заміни послідовних рядків нульовими даними перед додаванням тексту заміни. Згідно з командою, 3рд та 4го рядки файлу будуть замінені текстом, "Це дуже корисний інструмент".

$ кішка сед.txt
$ sed -z 's / Розроблено Лі Е. Макмехон.\ nВикористовується для тексту
обробка./ Це ​​дуже корисний інструмент./ 'sed.txt

Наступний результат з’явиться після запуску команд.

Приклад-2: Замініть кілька рядків на основі відповідності та глобального прапора

Наступна команда 'sed' замінить усі рядки, що починаються зі слова, "Це" словом, 'Цей рядок замінено '.

$ кішка сед.txt
$ sed 's / ^ Це.* / Цей рядок замінено / g 'sed.txt

Наступний результат з’явиться після запуску команд. Три рядки містять слово "Це'у файлі. Отже, ці рядки замінено текстом заміни.

Приклад-3: Замініть кілька рядків на основі команди збігу та наступного рядка

Наступна команда 'sed' замінить слово, 'є"за словом"було'з командою наступного рядка,' n '.

$ кішка сед.txt
$ sed 'n; / is / s / is / was /' sed.txt

Наступний результат з’явиться після запуску команд. Ось, "є" існує в 2й та 4го рядки файлу, і ці рядки модифікуються словом "було".

Замініть кілька рядків, створивши файл сценарію 'sed':

У попередніх прикладах команди 'sed' виконувались з терміналу. Але це мова сценаріїв, і якщо скрипт містить декілька операторів, тоді краще створити файл sed з цим сценарієм. Створіть текстовий файл з іменем студентів.txt із наступним вмістом, в якому буде застосовано сценарій 'sed'.

студентів.txt

ID: 111045
Ім'я: Роберт
Відділ: CSE
Партія: 35
ID: 111876
Ім'я: Йосип
Кафедра: BBA
Партія: 27
ID: 111346
Ім'я: Вільям
Відділ: CSE
Партія: 45
ID: 111654
Ім'я: Чарльз
Відділ: ЕЕО
Партія: 41
ID: 111346
Ім'я: Джон
Відділ: CSE
Партія: 25
ID: 111746
Ім'я: Томас
Відділ: CSE
Партія: 15

Приклад-4: Замініть кілька рядків файлу, використовуючи файл сценарію 'sed'

Створіть файл sed з іменем замінити.sed з наступним вмістом, щоб замінити кілька рядків на основі шаблону пошуку. Тут слово "CSE'буде здійснено пошук у текстовому файлі, і якщо збіг існує, тоді він знову буде шукати цифри 35 та 15. Якщо друге збіг існує у файлі, його буде замінено номером 45.

замінити.sed

/ CSE /
p; n;
/ 35 /
s / 35/45 /;
p; d;

/ 15 /
s / 15/55 /;
p; d;


р;

Виконайте наступну команду, щоб перевірити наявний вміст файлу. "CSE" з'явилося чотири рази у текстовому файлі. 35 і 15 існують у двох місцях.

$ котячі студенти.txt

Наступна команда замінить вміст декількох рядків на основі сценарію sed.

$ sed -n -f замінити.студентів.txt

Наступний результат з’явиться після запуску команди.

Висновок

У цьому посібнику показані різні способи заміни кількох рядків або вміст декількох рядків за допомогою команди 'sed'. Як цей скрипт може виконуватися з файлу sed, також показано в цьому посібнику. Сподіваюсь, цей підручник допоможе читачеві замінити кілька рядків будь-якого файлу за допомогою команди 'sed'.

Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...
Кращі емулятори ігрової консолі для Linux
У цій статті буде перелічено популярне програмне забезпечення для емуляції ігрової консолі, доступне для Linux. Емуляція - це рівень сумісності програ...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...