sed Kommando for å erstatte en streng i en fil

Sed Command Replace String File



Når vi jobber med noen form for filer, er det en veldig vanlig praksis å gjøre endringer i disse filene ved å finne og erstatte ord. De fleste tekstredigerere tilbyr forskjellige GUI -baserte metoder for å utføre disse endringene. Noen ganger trenger du imidlertid en måte å finne og erstatte ordene i en fil via terminalen. Derfor vil vi i denne artikkelen lede deg gjennom metoden for å bruke sed -kommandoen for å erstatte en streng i en tekstfil. Vi vil også kaste lys over de forskjellige scenariene der denne kommandoen kan brukes.

Merk: Vi bruker Linux Mint 20 for å demonstrere bruken av sed -kommandoen for å erstatte en streng i en fil. Du kan også bruke hvilken som helst annen smak av Linux hvis du vil.







Bruk av sed Command:

Nå skal vi vise deg noen veldig interessante eksempler for å skildre bruken av sed -kommandoen i Linux. La oss se hvordan denne kommandoen fungerer i forskjellige scenarier.



Opprette en tekstfil for demonstrasjon:

For å demonstrere bruken av sed -kommandoen, vil vi gjerne jobbe med en tekstfil. Du kan imidlertid til og med lage en Bash -fil eller en annen fil du ønsker. For det andre vil vi opprette filen i hjemmekatalogen slik at vi ikke trenger å spesifisere noen komplekse stier mens vi får tilgang til denne filen. Følgende trinn bør utføres for å lage en tekstfil:



Klikk på File Manager -ikonet på Linux Mint 20 -oppgavelinjen:





Opprett nå en ny tekstfil i Hjem-katalogen ved å høyreklikke hvor som helst der borte og deretter velge alternativet Nytt dokument fra kaskader-menyen og Tøm dokument-alternativet fra undermålingsmenyen. Når tekstfilen er opprettet, gir du den et passende navn. For dette eksemplet har jeg kalt det som sed.txt.



Dobbeltklikk på denne filen for å åpne den og skriv inn tilfeldig tekst i den som vist på bildet nedenfor. Lagre denne tekstfilen ved å trykke Ctrl +S og deretter lukke den.

Start nå terminalen i Linux Mint 20 som vist på følgende bilde:

Etter å ha lansert terminalen i Linux Mint 20, kan du gå gjennom alle eksemplene nevnt nedenfor en etter en.

Bruke sed -kommandoen for å erstatte alle forekomster av et gitt ord:

Du kan bruke sed -kommandoen for å erstatte alle forekomster av et gitt ord i en tekstfil. Syntaksen for å nå dette målet er nevnt nedenfor:

$sed’S/sed/FindWord/ReplaceWord/’File.txt

Her må du erstatte FindWord med ordet du vil erstatte og ReplaceWord med ordet som skal erstattes. Dessuten må du også erstatte filen med navnet på filen der du vil gjøre disse erstatningene. I dette scenariet har jeg erstattet FindWord med sed og ReplaceWord med erstatt. Filnavnet vårt var sed.txt. Det er også vist på følgende bilde:

Den vellykkede utførelsen av denne kommandoen viser deg endringene som har skjedd på grunn av å kjøre denne kommandoen på terminalen din:

Bruke sed -kommandoen for å erstatte den niende forekomsten av et gitt ord i hver linje:

Scenariet ovenfor var det enkleste erstatningsscenariet, men til tider vil du ikke erstatte alle forekomster av et ord, men du vil bare erstatte den første, andre eller nte forekomsten av det ordet i alle linjene. For å gjøre dette kan du utføre følgende kommando:

$sed’S/FindWord/ReplaceWord/num ’file.txt

Her må du erstatte FindWord med ordet du vil erstatte og ReplaceWord med ordet som skal erstattes. Dessuten må du også erstatte filen med navnet på filen der du vil gjøre disse erstatningene. I dette scenariet har jeg erstattet FindWord erstatt og Erstatt ord med sed. Filnavnet vårt var sed.txt. Num refererer også til forekomsten eller plasseringen av ordet som skal erstattes. I det demonstrerte eksemplet vil jeg erstatte den første forekomsten av erstatning med sed i hver linje som vist på bildet nedenfor:

Den vellykkede utførelsen av denne kommandoen viser deg endringene som har skjedd på grunn av å kjøre denne kommandoen på terminalen din:

Bruke sed -kommandoen for å erstatte et gitt ord i en bestemt linje:

Noen ganger vil du bare erstatte et gitt ord i en bestemt linje og ikke i hele dokumentet. For å gjøre det må du eksplisitt spesifisere det bestemte linjenummeret i følgende kommando:

$sed‘LineNum s/FindWord/ReplaceWord/’File.txt

Her må du erstatte FindWord med ordet du vil erstatte og ReplaceWord med ordet som skal erstattes. Dessuten må du også erstatte filen med navnet på filen der du vil gjøre disse erstatningene. I dette scenariet har jeg erstattet FindWord sed og ReplaceWord med erstatt. Filnavnet vårt var sed.txt. Du må også erstatte LineNum med linjenummeret til den aktuelle linjen der du vil gjøre erstatningen. I dette eksemplet ønsket vi å erstatte sed med erstatte på linje 2 i filen vår som vist i følgende bilde:

Den vellykkede utførelsen av denne kommandoen viser deg endringene som har skjedd på grunn av kjøring av denne kommandoen på terminalen din. Du kan enkelt bekrefte at de nevnte endringene bare har skjedd på linje 2 i filen vår og ikke i hele teksten.

Konklusjon:

Når du føler behov for å erstatte et ord i en fil, er det aller første du må gjøre å identifisere ditt spesielle krav, dvs. om du vil erstatte det spesifikke ordet i hele filen, eller om du vil erstatte en bestemt forekomst av det bestemte ordet, eller du vil erstatte det ordet i en bestemt linje. Når du har identifisert ditt spesielle scenario, kan du bruke den spesifikke metoden fra eksemplene som er omtalt i denne artikkelen.