Sed på plass redigeringsfil

Sed på plass redigeringsfil

“I UNIX/Linux -økosystemet er SED -kommandoen et dedikert verktøy for redigering av strømmer, derav navnet (Stream Editor). Den mottar tekstinnganger som "strømmer" og utfører de spesifiserte operasjonene på strømmen.”

I denne guiden vil vi utforske å utføre på stedet filredigering med SED.

Forutsetninger

For å utføre trinnene som er demonstrert i denne guiden, trenger du følgende komponenter:

    • Enhver moderne Unix/Linux -distro. For denne guiden bruker jeg Ubuntu 20.04 LTS kjører på VirtualBox.
    • En passende terminalemulator, helst med syntakshøydepunkt. Sjekk ut noen av de beste terminalemulatorene på Linux.

Redigeringsstrøm ved hjelp av SED

La oss først se på hvordan SED fungerer. Kommandostrukturen til SED er som følger:

$ sed


Følgende kommando viser frem en enkel arbeidsflyt av SED:

$ ECHO "The Quick Brown Fox" | sed -e 's/hurtig/rask/'



Her,

    • Echo -kommandoen skriver ut strengen på Stdout. Lær mer om stdin, stdout og stderr.
    • Vi rør resultatet til sed Her, Stdout er strømmen sed som vil utføre oppgaven som er spesifisert.
    • De sed Kommando, som spesifisert, vil søke etter ethvert forekomst av ordet rask og erstatt den med fort. Den resulterende strømmen vil bli skrevet ut på konsollen.

Hva om vi ønsket å endre tekstene til en tekstfil? SED -kommandoen kan også fungere ved hjelp av tekstfiler som strømmen. For demonstrasjon har jeg tatt tak i følgende tekstfil:

$ kattdemo.tekst



Følgende SED -kommando vil erstatte alle forekomster av de med da:

$ sed -e 's/the/da/g' demo.tekst



Sjekk innholdet i demo.tekst for endringer:

$ kattdemo.tekst



Fra det siste eksemplet kan vi se at SED bare skrev ut den resulterende strømmen på konsollen. Kildefilen (demo.tekst) ble ikke rørt.

Redigering av filer på stedet ved hjelp av SED

Som demonstrert fra forrige eksempel, er standardhandlingen til SED å skrive ut det endrede innholdet på skjermen. Det er en flott funksjon som kan forhindre tilfeldige endringer i filer. Imidlertid, hvis vi ønsket å lagre endringene i filen, trengte vi å gi noen ekstra alternativer.

En enkel og vanlig teknikk vil være å erstatte innholdet i filen med sed produksjon. Ta en titt på følgende kommando:

$ kattdemo.txt | sed 's/the/da/g' | tee -demo.tekst



Her overskriver vi innholdet i demo.tekst med utgangen fra sed kommando.

Mens kommandoen fungerer som tiltenkt, krever det å skrive flere koder. Vi involverte kat- og tee -kommandoene sammen med SED -kommandoen. Bash er også involvert i å omdirigere utgangene. Dermed er kommandoen mer ressurskrevende enn den trenger å være.

For å løse dette kan vi bruke den på stedet redigeringsfunksjonen til SED. I denne modusen, sed vil endre innholdet i filen direkte. For å påkalle redigeringsmodus på stedet, må vi bruke -Jeg eller -på plass flagg. Følgende sed Kommando implementerer det:

$ sed - -in -place -e 's/the/da/g' demo.tekst



Kryss av demo.tekst for endringer:

$ kattdemo.tekst



Som du ser endres filinnholdet uten å legge til noen ekstra komponenter.

Siste tanker

I denne guiden demonstrerte vi med hell å utføre redigeringer på stedet på tekstfiler ved hjelp av sed. Mens Sed i seg selv er et enkelt program, ligger den viktigste kraftkilden innenfor dens evne til å innlemme vanlige uttrykk. Regex tillater å beskrive veldig komplekse mønstre som SED virker på. Sjekk ut Regex i SED for å lære mer dyptgående.

Alternativt kan du bruke bashskript for å filtrere og endre innholdet i en fil. Faktisk kan du innlemme SED i skriptene dine for å finjustere tekstinnhold. Sjekk ut denne guiden for å komme i gang med bash -skripting.

Glad databehandling!