Редактор на потоци (SED): Основите

Redaktor Na Potoci Sed Osnovite



SED, известен също като редактор на потоци, е много полезен инструмент. Използва се за търсене на конкретна дума или шаблон и впоследствие да направи нещо с думата или шаблона или с други думи да го трансформира. В Windows SED е известен също като функциите „намиране“ и „замяна“. SED идва с Ubuntu, така че няма нужда да инсталирате нищо; просто започнете да го използвате. В този урок ще ви покажем как да използвате SED или редактора на потока.

Командата 'S'.

Най-важната от всички команди в SED или редактора на потоци е командата „s“. Буквата „s“ означава заместител. Синтаксисът е както следва:







/ regexp / замяна / знамена


И така, нека използваме файл, наречен „file.txt“ за примерите. Ето как изглежда „file.txt“, ако го хванете:




Нека използваме пример, за да покажем как работи командата 's':



но / първи / луна / аз файл.txt > moon.txt


Когато е даден такъв израз, това означава:





    • s – Това означава заместител.
    • първо – думата за търсене във файла, наречен „file.txt“.
    • луна – думата „първи“ се заменя с думата „луна“.
    • i – Това означава игнориране. Ще пренебрегнем тази част за първи път.
    • file.txt – Файлът, в който SED ще търси модела или думата. В този случай думата 'първо' ще бъде:
    • търсено във file.txt

    • moon.txt – Когато думата „first“ се замени с думата „moon“, тя ще бъде запазена под „moon.txt“.

И така, какво се случва тук? SED замества думата „първи“ с „луна“ само в първия случай (това означава, че ако думата „първи“ се случи няколко пъти, няма да я замени изцяло или да я замени няколко пъти). Файлът, който търси, се нарича „file.txt“ и след извършване на трансформацията или замяната, той ще бъде записан под „moon.txt“.



Ето как изглежда:


Моля, не забравяйте да поставите „/“ където трябва. Ако пропуснете „/“, SED няма да приеме командата.

Досега сме заменяли само думата „първи“ с „срещнал“ със замяната. Сега да предположим, че искаме да заменим думата „линия“ (която се среща много пъти – четири пъти, за да сме конкретни) в третия ред с думата „ангел“.

Как конкретно да се насочим към този трети ред? Използваме следната команда:

но ‘3s / линия / ангел / аз файл.txt > ангел.txt


И така, какво се случи току-що тук? Е, „3“ указва номера на реда. Следователно отива на третия ред. След това заменете думата „линия“ с „ангел“ във файла, наречен „file.txt“, и запазете трансформирания файл като „angel.txt“.


Какво ще стане, ако искаме да заменим или трансформираме редовете „3” и „4”?

но ' 3 ,4s / линия / ангел / аз файл.txt > angel2.txt



Обърнете внимание, че в предишния пример използвахме флага „i“ за игнориране. Сега използваме флага 'g' за глобален.

Нека използваме пример, за да покажем как работи командата 's':

но / линия / слънце / g’ file.txt > sun.txt


Когато е даден такъв израз, това означава:

„g“ означава глобален. Не забравяйте, че в първия пример, когато използваме флага „i“, има само една замяна. След като добавихме „g“ за глобално, това означава заместване навсякъде. И така, вместо да казва първи ред, втори ред, трети ред и последен ред, се казва първо слънце, второ слънце, трето слънце и последно слънце. Той заменя реда с думи в целия файл (навсякъде) с думата „слънце“.


Сега, какво ще стане, ако искаме да изберем един ред въз основа на дума, която съдържа? Е, виждаме, че последният ред на „file.txt“ съдържа думата „последен“. Сега да предположим, че искаме „Това е последният ред. Това е последното изречение.” изречение да стане „Това е последният призрак. Това е последното изречение.”

Пишем следното:

но ' / последно / с / линия / призрак / ’ file.txt > призрак.txt


„Последният“ тук казва на SED да потърси реда, който има думата „последен“ и след това да замени думата „линия“ с „призрак“ в този ред.


Сега да предположим, че искаме да направим обратното. Да предположим, че искаме всеки ред без думата „последен“ да има думата „линия“ да бъде променена на „призрак“. Нека напишем следното:

но ' / последно /! с / линия / призрак / ’ file.txt > ghost2.txt


Както можете да видите тук, всеки ред с изключение на последния (който съдържа думата „последен“) има думата „линия“, заменена с думата „призрак“.


Можем да направим това и с номера на редове:

но ' 3 , 4 ! с / линия / нощ / аз файл.txt > нощ.txt


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

Множество команди

Ами ако имате няколко команди? Бихте ли предпочели да го направите едно по едно или всички наведнъж и да си спестите време и работа?

Какво ще стане, ако искаме да променим думата „първо“ на „ден“, „второ“ на „нощ“ и „останалото“ на „призрак“? Използваме точка и запетая, за да направим това. Не забравяйте да поставите точка и запетая в края!

Моля, обърнете внимание, че не е задължително да поставяте флага „i“ или флага „ignore“, но абсолютно трябва да поставите наклонената черта (/) след фразата за трансформация.

Сега нека го проверим с пример:

но / първи / ден / ; с / второ / нощ / ; с / трети / призрак / ; с / последно / призрак / ;’ file.txt > комбинация.txt


Заключение

Редакторът на потоци или SED е начин за избиране на дума или модел и трансформирането им. Това всъщност е еквивалентът на командния ред на функциите „намиране“ и „замяна“ на прозореца. Командата SED може да стане наистина сложна, но ако знаете поне основите, вие сте готови да я приемете! SED всъщност е много мощен инструмент с много функции. Въпреки че не можем да ги покрием всички в един урок, ние покрихме основите на SED. По същество научихме как да трансформираме определена дума с помощта на командата „s“, където „s“ означава заместител. Можем да заменим думите с други думи, избирателно да изберем ред, където ще се случи заместването, или дори да го отхвърлим. Така или иначе, това е най-лесната част за SED.

Честито кодиране!