Stream Editor (SED): Det grundlæggende

Stream Editor Sed Det Grundlaeggende



SED, også kendt som stream editor, er et meget nyttigt værktøj. Det bruges til at søge efter et bestemt ord eller et mønster og efterfølgende gøre noget ved ordet eller mønsteret eller med andre ord transformere det. I Windows er SED også kendt som 'find' og 'erstat' funktionerne. SED kommer med Ubuntu, så der er ingen grund til at installere noget; bare begynde at bruge det. I denne tutorial fortæller vi dig, hvordan du bruger SED eller stream-editoren.

'S' kommandoen

Den vigtigste af alle kommandoer i SED eller stream-editoren er 's'-kommandoen. 'S' står for erstatning. Syntaksen er som følger:







’s / regexp / udskiftning / flag


Så lad os bruge en fil kaldet 'file.txt' til eksemplerne. Sådan ser 'file.txt' ud, hvis du bruger det:




Lad os bruge et eksempel til at vise, hvordan kommandoen 's' fungerer:



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


Når et sådant udtryk er givet, betyder det:





    • s – Det står for substitut.
    • først – Ordet, der skal søges efter i filen kaldet 'file.txt'.
    • måne - Ordet 'først' erstattes af ordet 'måne'.
    • i – Det står for ignorere. Vi ignorerer denne del den første del.
    • file.txt – Filen hvor SED skal søge efter mønsteret eller ordet. I dette tilfælde vil ordet 'først' være:
    • søgte i file.txt

    • moon.txt – Når ordet 'først' erstattes af ordet 'måne', vil det blive gemt under 'moon.txt'.

Så hvad sker der her? SED erstatter kun ordet 'først' for 'måne' i første omgang (det betyder, at hvis ordet 'først' tilfældigvis forekommer flere gange, vil det ikke erstatte det hele eller erstatte det flere gange). Filen den søger kaldes 'file.txt', og når transformationen eller udskiftningen er foretaget, vil den blive gemt under 'moon.txt'.



Sådan ser det ud:


Husk at sætte '/' hvor det skal være. Hvis du udelader et '/', accepterer SED ikke kommandoen.

Indtil videre har vi kun erstattet ordet 'først' med 'opdaget' med erstatningen. Antag nu, at vi ønsker at erstatte ordet 'linje' (som forekommer mange gange - fire gange for at være specifik) i den tredje linje med ordet 'engel'.

Hvordan målretter vi specifikt mod den tredje linje? Vi bruger følgende kommando:

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


Så hvad skete der lige her? Nå, '3' angiver linjenummeret. Derfor går den til tredje linje. Erstat derefter ordet 'line' med 'angel' i filen kaldet 'file.txt' og gem den transformerede fil som 'angel.txt'.


Hvad hvis vi vil erstatte eller transformere linjerne '3' og '4'?

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



Bemærk, at i det foregående eksempel brugte vi 'i'-flaget til at ignorere. Nu bruger vi 'g' flaget for global.

Lad os bruge et eksempel til at vise, hvordan kommandoen 's' fungerer:

men ’s / linje / sol / g' file.txt > sun.txt


Når et sådant udtryk er givet, betyder det:

'g' står for global. Husk, at i det første eksempel, når vi bruger 'i'-flaget, er der kun en enkelt erstatning. Nu hvor vi tilføjede et 'g' for global, betyder det erstatning overalt. Så i stedet for at sige første linje, anden linje, tredje linje og sidste linje, står der første sol, anden sol, tredje sol og sidste sol. Det erstatter ordlinjen i hele filen (overalt) med ordet 'sol'.


Hvad nu hvis vi vil vælge en enkelt linje baseret på et ord, den indeholder? Nå, vi kan se, at den sidste linje i 'file.txt' har ordet 'sidste' i sig. Antag nu, at vi vil have 'Dette er den sidste linje. Dette er den sidste sætning.' sætning til at blive 'Dette er det sidste spøgelse. Dette er den sidste sætning.'

Vi skriver følgende:

men ' / sidst / s / linje / spøgelse / ' file.txt > spøgelse.txt


Den 'sidste' her fortæller SED at lede efter den linje, der har ordet 'sidste' og derefter erstatte ordet 'linje' med 'spøgelse' inden for den linje.


Antag nu, at vi ønsker at gøre det modsatte. Antag, at vi ønsker, at hver linje uden ordet 'sidste' skal have ordet 'linje' ændret til 'spøgelse'. Lad os skrive følgende:

men ' / sidst /! s / linje / spøgelse / ' file.txt > spøgelse2.txt


Som du kan se her, har hver linje undtagen den sidste (som indeholder ordet 'sidste') ordet 'linje' erstattet med ordet 'spøgelse'.


Vi kan også gøre dette med linjenumre:

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


I dette tilfælde er linje 3 og 4 udeladt, men hver anden linje har ordet 'linje' erstattet af ordet 'nat'.

Flere kommandoer

Hvad nu hvis du havde flere kommandoer? Vil du hellere gøre det én ad gangen eller alle på én gang og spare dig selv for lidt tid og arbejde?

Hvad hvis vi vil ændre ordet 'første' til 'dag', 'anden' til 'nat' og 'resten' til 'spøgelse'? Vi bruger semikolon til at gøre dette. Glem ikke at sætte semikolon til sidst!

Bemærk venligst, at du ikke absolut behøver at sætte 'i' flaget eller 'ignorer' flaget, men du skal absolut sætte skråstreg (/) efter transformationssætningen.

Lad os nu tjekke det ud med et eksempel:

men ’s / først / dag / ; s / anden / nat / ; s / tredje / spøgelse / ; s / sidst / spøgelse / ;' file.txt > kombination.txt


Konklusion

Stream-editoren eller SED'en er en måde at vælge et ord eller et mønster på og transformere det. Det er faktisk kommandolinjeækvivalenten til vinduets 'find' og 'erstat' funktioner. SED-kommandoen kan blive virkelig kompliceret, men hvis du i det mindste kender det grundlæggende, er du klar til at tage den på! SED er faktisk et meget kraftfuldt værktøj med mange funktioner. Selvom vi ikke kan dække dem alle i én tutorial, dækkede vi det grundlæggende i SED. I bund og grund lærte vi, hvordan man transformerer et bestemt ord ved hjælp af kommandoen 's', hvor 's' står for erstatning. Vi kan erstatte ordene med andre ord, selektivt vælge en linje, hvor substitutionen vil finde sted, eller endda ophæve den. Uanset hvad, er dette den nemmeste del af SED.

God kodning!