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, тъй като сме виждали всяка от опциите за неговото използване.