Как да замените няколко реда с помощта на командата `sed`

How Replace Multiple Lines Using Sed Command



Понякога се изисква да се заменят няколко реда на файл с който и да е символ или текст. В Linux съществуват различни команди за замяна на няколко реда на файл. Командата `sed` е една от тях за изпълнение на този тип задачи. Пълната форма на `sed` е Steam Editor и се използва главно за четене и преобразуване на текста по различни начини чрез използване на регулярен израз. Как тази команда може да се използва за замяна на множество редове на файл по различни начини е обяснено в този урок.

Често използвани `sed` Cheat Sheet:

Най -често използваните символи, използвани в командата `sed`, са обяснени в следващата таблица.







Персонаж Предназначение
да се Използва се за добавяне на съдържание.
б Използва се за разклоняване на съдържание.
° С Използва се за промяна на съдържанието.
д Използва се за изтриване на ред от файл.
д Използва се за изтриване на първия ред на файл.
g Използва се за копиране от задържащия текст.
G Използва се за добавяне от задържащия текст.
з Използва се за копиране в задържания текст.
З Използва се за добавяне към задържащия текст.
i Използва се за вмъкване.
Аз Използва се за отпечатване на заместващия ред.
н Използва се за преминаване към следващия ред.
н Използва се за добавяне на следващия входен ред.
стр Използва се за печат.
P Използва се за отпечатване на първия ред.
Какво Използва се за отказване.
В Използва се за незабавно отказване.
r Използва се за четене на файла.
R Използва се за четене на реда от файла.
с Използва се за заместване.
T Използва се за тестване за заместване.
T Използва се за тестване за липса на заместване.
в Използва се за запис във файла.
IN Използва се за запис на ред във файла.
х Използва се за смяна на шаблони и задържане.
и Използва се за превод.
С Използва се за изчистване на линията.
‘=’ Използва се за отпечатване на номера на ред.

Заменете няколко реда, като използвате командата `sed` от терминала:

В тази част на този урок е показано как командата `sed` може да се използва за замяна на множество редове от файл от терминала. Създайте файл с име sed.txt със следното съдържание тествайте командите на тази част.



sed.txt



Пълната форма на sed е редактор на потоци.





Това е помощна програма на Unix, която се използва за четене и преобразуване на текста в различен формат.

Той е разработен от Lee E. McMahon.



Използва се за обработка на текст.

Той поддържа регулярни изрази.

Пример-1: Сменете две последователни линии

Следващата команда `sed` ще замени два последователни реда с друг ред. Тук опцията -z се използва за замяна на последователните редове с нулеви данни, преди да се добави заместващият текст. Според командата 3rdи 4thредовете на файла ще бъдат заменени с текст, „Това е много полезен инструмент“ .

$коткаsed.txt
$sed 's/Той е разработен от Lee E. McMahon. nИзползва се за текст
обработка./Това е много полезен инструмент./'
sed.txt

Следният изход ще се появи след изпълнение на командите.

Пример-2: Заменете няколко реда въз основа на съвпадение и глобален флаг

Следващата команда `sed` ще замени всички редове, които започват с думата, 'То' с думата „ Този ред се заменя ‘.

$коткаsed.txt
$sed 's/^It.*/Този ред се заменя/g'sed.txt

Следният изход ще се появи след изпълнение на командите. Три реда съдържат думата „ То ‘Във файла. Така че тези редове са заменени от заместващия текст.

Пример-3: Заменете няколко реда въз основа на съвпадението и командата на следващия ред

Следващата команда „sed“ ще замени думата, “ е „От думата“, беше „С командата на следващия ред,„ n “.

$коткаsed.txt
$sed '{n;/is/{s/is/was/}}'sed.txt

Следният изход ще се появи след изпълнение на командите. Тук, „Е“ съществува в 2ndи 4thредове на файла и тези редове се променят от думата 'беше' .

Заменете няколко реда, като създадете скриптов файл `sed`:

В предишните примери командите `sed` са изпълнявани от терминала. Но това е скриптов език и ако скриптът съдържа множество изявления, тогава е по -добре да създадете sed файл със скрипта. Създайте текстов файл с име students.txt със следното съдържание, в което ще бъде приложен скриптът `sed`.

students.txt

ID: 111045
Име: Робърт
Отдел: CSE
Партида: 35

ID: 111876
Име: Джоузеф
Катедра: BBA
Партида: 27

ID: 111346
Име: Уилям
Отдел: CSE
Партида: 45

ID: 111654
Име: Чарлз
Отдел: EEE
Партида: 41

ID: 111346
Име: Джон
Отдел: CSE
Партида: 25

ID: 111746
Име: Томас
Отдел: CSE
Партида: 15

Пример-4: Заменете няколко реда на файл, като използвате скриптов файл `sed`

Създайте sed файл с име replace.sed със следното съдържание, за да замени няколко реда въз основа на шаблона за търсене. Тук думата „ CSE „Ще се търси в текстовия файл и ако съвпадението съществува, то ще търси отново числата 35 и 15. Ако второто съвпадение съществува във файла, то ще бъде заменено с номер 45.

replace.sed

/CSE/ {
p; n;
/35/ {
с/35/Четири пет/;
p; d;
}
/петнадесет/ {
с/петнадесет/55/;
p; d;
}
}
p;

Изпълнете следната команда, за да проверите съществуващото съдържание на файла. „CSE“ се появява четири пъти в текстовия файл. 35 и 15 съществуват на две места.

$коткаstudents.txt

Следващата команда ще замени съдържанието на множество редове въз основа на sed скрипта.

$sed -freplace.sed students.txt

Следният изход ще се появи след изпълнение на командата.

Заключение

В този урок са показани различни начини за замяна на няколко реда или съдържанието на множество редове с помощта на командата `sed`. В този урок е показано също как скриптът `sed` може да бъде изпълнен от sed файл. Надявам се, че този урок ще помогне на читателя да замени няколко реда от всеки файл, като използва командата `sed`.