▷ Как да използвате командата SED в Linux - ПРИМЕРИ

Linux е система, пълна с команди, където всяка от тях играе съществена роля в поведението на определени задачи, независимо дали са потребителски, обектни или поддържащи, всяка команда има своето участие в Linux и една от тези команди е Sed, за която ще говорим в Solvetic в подробности.

Какво представлява командата sed в LinuxКомандата sed е буквално редактор на потоци, който можем да използваме, за да променим произведения върху текста с основни функции във входен поток или от файл, или от вход от конвейер, ако е приложимо.

За разлика от други текстови редактори, при sed е възможно да се филтрира текст в конвейер, докато преминаваме през избраното съдържание.

ПредимствоПредимствата на използването на sed в Linux са:

  • Можем да избираме текст
  • Можем да заменим текст
  • Добавяне на редове към текст
  • Можем да премахнем редове от текста
  • Позволява ви да променяте или запазвате оригинален файл

Общият синтаксис за използване на sed е следният:

 sed ОПЦИИ … [SCRIPT] [INPUT_FILE …]
Ще научим някои начини за използване на тази команда в Linux.

1. Как да използвате командата SED в Linux

Основно използване на sedЗа този пример ще използваме „ехо“, за да видим как командата sed може да замени част от въведения текст, въвеждаме:

 ехо солвитично | sed 's / vitic / vetic /'
В този случай казваме на sed да замени думата „vitic“ с „vetic“, при натискане на Enter това ще бъде резултатът:

Увеличете

Виждаме, че промяната е автоматична.

2. Избиране на текст с командата SED Linux

Етап 1
В този случай ще имаме текстов файл, който се хоства на работния плот:

Увеличете

Сега ще използваме следния ред:

 по -малко Solvetic.txt
Стъпка 2
При натискане на Enter това ще бъде резултатът:

Увеличете

С sed е възможно да изберете някои редове от файла, за това трябва да посочим началните и крайните редове от диапазона, който да изберем, например, ако искаме да извлечем редове от две до седем, ние изпълняваме:

 sed -n '2,7p' Solvetic.txt
Стъпка 3
Ще видим следното:

Увеличете

Трябва да имаме предвид запетаята в диапазоните, които трябва да бъдат присвоени (2,7), параметърът p означава, че означава „отпечатване на съвпадащи редове“, с това командата sed ще отпечата всички редове от този диапазон и -n (тихо ) се грижи да не показва текст, който не съответства на този диапазон.

Стъпка 4
Можем да използваме параметъра -e (израз), за да направим множество избори, например:

 sed -n -e '1,2p' -e '5,6p' Solvetic.txt

Увеличете

Стъпка 5
С sed е възможно да се избере началният ред, след това ние посочваме кой трябва да се пресече във файла и да отпечатаме алтернативните редове, например, въвеждаме:

 sed -n '1 ~ 3p' Solvetic.txt
В този случай първото число се отнася до стартовата линия, а второто число казва на кои редове след стартовата линия ще бъдат показани:

Увеличете

Стъпка 6
Друга употреба на sed е възможността да избираме редове, в които са съвпадащите текстови модели, това ако не знаем откъде произхожда номерът на реда, можем да изпълним следното:

 sed -n ' / Run / p' Solvetic.txt

Увеличете

Ще видим редовете, които започват с този термин.

3. Как да създадете заместители с SED Linux

Етап 1
В основната част видяхме как да заменим текст с помощта на sed, там използвахме параметъра -s (замяна). Тогава първият низ показва шаблона за търсене, а вторият се отнася до текста, с който той ще бъде заменен.

 sed -n 's / tasks / actions / p' Solvetic.txt 
В този пример заменяме „задачи“ с „действия“:

Увеличете

Стъпка 2
С параметъра p sed той спира автоматично след първото съвпадение, за да извършим глобално търсене и да направим промяната като цяло, трябва да добавим „g“:

 sed -n 's / tasks / actions / gp' Solvetic.txt
Ако искаме той да не е чувствителен към регистъра, ще добавим „i“:
 sed -n 's / tasks / actions / gpi' Solvetic.txt
Стъпка 3
Възможно е да се създадат ограничения за заместването само на определени раздели на файла, като първо изброяваме редовете, които ще бъдат анализирани:
 sed -n '1,3p' Solvetic.txt

Увеличете

Стъпка 4
Нека да видим следното, можем да намерим къде има две интервали и да ги заменим с едно:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Звездичката (*) представлява нула или повече от предварително избрания знак.

Стъпка 5
Можете да намалите шаблона за търсене до едно пространство със следната команда:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Виждаме разликата в резултатите:

Увеличете

Във втория случай звездичката съответства на нула или повече от предишния знак, което прави всеки знак, който не е интервал, да изглежда като „нула интервал“ чрез прилагане на командата.

Стъпка 6
За да направим две или повече замествания едновременно, изпълняваме:

 sed -n -e 's / изпълнено / приложено / gip' -e 's / задачи / действия / gip' Solvetic.txt

Увеличете

4. Опции за подмяна на SED в Linux


Можем също така да използваме sed за извличане на имена на файлове от системата, като в този случай трябва да имаме предвид, че всеки обект трябва да съответства на модел за търсене (под изрази), който може да бъде номериран (до максимум девет елемента).

Етап 1
След това тези числа могат да бъдат използвани за препратка към конкретни суекспресии.
Подизразът трябва да бъде затворен в скоби [()] и скобите трябва да бъдат предшествани от обратна наклонена черта (\), така че да не бъдат открити като нормален знак, например:

 sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd

Увеличете

Променливите, използвани в тази команда, са

  • sed 's /: показва командата sed и началото на израза за замяна.
  • \ (: заградете подизразът, предшестван от обратна наклонена черта
  • [^:] *: е първият подизраз на думата за търсене, която съдържа група между скоби, знакът на каретата (^) означава „не“, когато се използва в група, тоест всеки знак, който не е двоеточие
  • \): Затварящата скоба [)] с наклонена черта
  • . *: е вторият подизраз на търсене, който показва "всеки знак и произволен брой от тях".
  • / \ 1: е заместващата част на израза, която съдържа число 1, предхождано от обратна наклонена черта (\) и показва, че текстът съвпада с първия подвираз
  • / ': прекратете командата sed

Стъпка 2
С предишната команда търсихме символен низ, който не съдържа двоеточие, тъй като всеки ред от файла / etc / passwd започва с потребителското име, завършващо на двоеточие. Можем да заменим тази стойност, изолирайки потребителското име със следната команда:

 sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd

Увеличете

Стъпка 3
Можем да покажем само потребителските имена със следната команда:

 sed 's /:.*// "/ etc/ passwd
Друг вариант със sed е да използвате параметъра c (cut - cut), за да замените текст във файл, например:
 sed ' / Linux / c Linux операционна система' Solvetic.txt

Увеличете

5. Вмъкнете редове и текст със SED в Linux

Етап 1
Друга задача, която трябва да използвате със sed, е да вмъкнете нови редове и текст във файл, в този случай имаме следните данни:

Увеличете

Стъпка 2
Можем да вмъкнем нов ред, посочващ под който ще бъде вмъкнат:

 sed ' / Ub / a -> Вмъкнато!' Solvetic.txt

Увеличете

Стъпка 3
Възможно е също да използвате командата Insert (i), за да вмъкнете нов ред над съвпадението:

 sed ' / Wi / i -> Вмъкнато!' Solvetic.txt

Увеличете

Стъпка 4
Можем да използваме знака амперсанд (&), за да добавим нов текст към съответстващ ред във файла, изпълняваме:

 sed 's /.*/--> Вмъкнат & /' Solvetic.txt

Увеличете

6. Как да изтриете ред със SED Linux


За този случай трябва да използваме параметъра d (изтриване), за да изтрием например втория ред, който изпълняваме:
 sed '2d' Solvetic.txt

Увеличете

Можем да премахнем диапазон, ако е необходимо:

 sed '1,4d' Solvetic.txt
За да премахнем линии извън диапазон, трябва да използваме удивителен знак (!) Както следва:
 sed '2,4! d' Solvetic.txt

7. Как да запазите промените със SED в Linux

Етап 1
За да приложите направените промени, е възможно да използвате опцията In-place (-i), за да може sed да запише промените в оригиналния файл, но за по-голяма сигурност можем да добавим разширение за архивиране, както следва (създадохме резервно копие редовете, съдържащи думата Wi):

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt
Ние изброяваме съдържанието:
 котка Solvetic.txt.bak

Увеличете

Стъпка 2
Възможно е да пренасочите изхода към нов файл със същите резултати:

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt

Увеличете

С sed можем да работим с файловете по напълно завършен начин в Linux, тъй като сме виждали всяка от опциите за неговото използване.

wave wave wave wave wave