Stream Editor (SED): Grunderna

Stream Editor Sed Grunderna



SED, även känd som stream editor, är ett mycket användbart verktyg. Det används för att söka efter ett visst ord eller ett mönster och sedan göra något med ordet eller mönstret eller med andra ord omvandla det. I Windows är SED även känd som funktionerna 'hitta' och 'ersätt'. SED kommer med Ubuntu, så det finns inget behov av att installera någonting; bara börja använda den. I den här handledningen berättar vi hur du använder SED eller strömredigeraren.

Kommandot 'S'.

Det viktigaste av alla kommandon i SED eller strömredigeraren är kommandot 's'. 'S' står för substitut. Syntaxen är som följer:







’s / regexp / ersättning / flaggor


Så låt oss använda en fil som heter 'file.txt' för exemplen. Så här ser 'file.txt' ut om du använder den:




Låt oss använda ett exempel för att visa hur kommandot 's' fungerar:



men ’s / först / måne / i’ file.txt > moon.txt


När ett sådant uttryck ges betyder det:





    • s – Det står för substitut.
    • först – Ordet att söka efter i filen som heter 'file.txt'.
    • måne – Ordet 'först' ersätts med ordet 'måne'.
    • i – Det står för ignorera. Vi kommer att ignorera denna del för den första biten.
    • file.txt – Filen där SED ska söka efter mönstret eller ordet. I det här fallet kommer ordet 'först' att vara:
    • sökte i file.txt

    • moon.txt – När ordet 'först' ersätts med ordet 'måne', kommer det att sparas under 'moon.txt'.

Så, vad händer här? SED ersätter ordet 'först' för 'måne' endast i första instans (det betyder att om ordet 'först' råkar förekomma flera gånger, kommer det inte att ersätta det hela eller ersätta det flera gånger). Filen den söker kallas för 'file.txt' och när omvandlingen eller ersättningen är gjord, kommer den att sparas under 'moon.txt'.



Så här ser det ut:


Kom ihåg att sätta '/' där det ska vara. Om du utelämnar ett '/', kommer SED inte att acceptera kommandot.

Hittills har vi bara ersatt ordet 'först' med 'stötte på' med ersättaren. Anta nu att vi vill ersätta ordet 'linje' (som förekommer många gånger - fyra gånger för att vara specifik) i den tredje raden med ordet 'ängel'.

Hur riktar vi oss specifikt mot den tredje linjen? Vi använder följande kommando:

men '3s / linje / ängel / i’ file.txt > angel.txt


Så, vad hände just här? Tja, '3' anger radnumret. Därför går den till tredje raden. Byt sedan ut ordet 'line' för 'angel' i filen som heter 'file.txt' och spara den transformerade filen som 'angel.txt'.


Vad händer om vi vill ersätta eller transformera raderna '3' och '4'?

men ' 3 ,4s / linje / ängel / i’ file.txt > angel2.txt



Observera att vi i föregående exempel använde flaggan 'i' för att ignorera. Nu använder vi 'g'-flaggan för global.

Låt oss använda ett exempel för att visa hur kommandot 's' fungerar:

men ’s / linje / Sol / g’ file.txt > sun.txt


När ett sådant uttryck ges betyder det:

'g' står för global. Kom ihåg att i det första exemplet, när vi använder 'i'-flaggan, finns det bara en enda ersättning. Nu när vi lagt till ett 'g' för global betyder det ersättning överallt. Så istället för att säga första raden, andra raden, tredje raden och sista raden, står det första solen, andra solen, tredje solen och sista solen. Den ersätter ordraden i hela filen (överallt) med ordet 'sol'.


Vad händer nu om vi vill välja en enda rad baserat på ett ord som den innehåller? Tja, vi kan se att den sista raden i 'file.txt' har ordet 'sista' i sig. Anta nu att vi vill ha 'Detta är den sista raden. Detta är den sista meningen.' meningen att bli 'Detta är det sista spöket. Detta är den sista meningen.'

Vi skriver följande:

men ' / sista / s / linje / spöke / ’ file.txt > ghost.txt


Den 'sista' här talar om för SED att leta efter raden som har ordet 'sista' och sedan ersätta ordet 'linje' med 'spöke' inom den raden.


Anta nu att vi vill göra tvärtom. Anta att vi vill att varje rad utan ordet 'sista' ska ändra ordet 'rad' till 'spöke'. Låt oss skriva följande:

men ' / sista /! s / linje / spöke / ’ file.txt > ghost2.txt


Som du kan se här har varje rad utom den sista (som innehåller ordet 'sista') ordet 'rad' ersatt med ordet 'spöke'.


Vi kan också göra detta med radnummer:

men ' 3 , 4 ! s / linje / natt / i’ file.txt > natt.txt


I det här fallet är raderna 3 och 4 utelämnade men varannan rad har ordet 'rad' ersatt med ordet 'natt'.

Flera kommandon

Tänk om du hade flera kommandon? Skulle du hellre göra det en i taget eller alla på en gång och spara lite tid och arbete?

Vad händer om vi vill ändra ordet 'första' till 'dag', 'andra' till 'natt' och 'resten' till 'spöke'? Vi använder semikolon för att göra detta. Glöm inte att sätta semikolon i slutet!

Observera att du absolut inte behöver sätta 'i'-flaggan eller 'ignorera'-flaggan, men du måste absolut sätta snedstrecket (/) efter transformationsfrasen.

Låt oss nu kolla upp det med ett exempel:

men ’s / först / dag / ; s / andra / natt / ; s / tredje / spöke / ; s / sista / spöke / ;’ file.txt > kombination.txt


Slutsats

Strömredigeraren eller SED är ett sätt att välja ett ord eller ett mönster och omvandla det. Det är faktiskt kommandoradens motsvarighet till fönstrets 'hitta' och 'ersätt' funktioner. SED-kommandot kan bli riktigt komplicerat men om du åtminstone kan grunderna är du redo att ta på dig det! SED är faktiskt ett mycket kraftfullt verktyg med många funktioner. Även om vi inte kan täcka dem alla i en handledning, täckte vi grunderna i SED. I huvudsak lärde vi oss hur man transformerar ett visst ord med hjälp av kommandot 's' där 's' står för substitut. Vi kan ersätta orden med andra ord, selektivt välja en linje där ersättningen kommer att ske, eller till och med förneka den. Hur som helst, detta är den enklaste delen med SED.

Glad kodning!