Lær Linux

Skifte streng i Bash

Skifte streng i Bash

Bash er en UNIX shell-kompatibel kommandoprosess hvis hovedoppgave er å manipulere strenger utført i et skallmiljø. Programmerere blir til tider bedt om å jobbe med forskjellige filer. De kan legge til, slette og erstatte deler eller hele filen slik at de passer til arbeidet deres. Dette krever kunnskapen om å erstatte streng i bash. Datalagring kan være midlertidig eller permanent, avhengig av dataenes art. Filstreng er viktig når du erstatter filinnholdet.

Skifte streng i Bash

sed er viktig og er nyttig for å hjelpe til med å erstatte strenger i en fil med bash-skript. Strengeditoren kan brukes på forskjellige måter for å erstatte filinnholdet i bash. En alternativ, men lydstrengeditor er vanskelig, som kan spilles inn når du erstatter strengverdi fra en fil ved hjelp av bash. Denne artikkelen viser ved hjelp av eksempler hvordan filinnholdet kan erstattes i bash. Merk at kunnskap i regex-mønstre også kan ha stor verdi når du bytter streng i bash.

Bash String Manipulation

Når du utfører mindre eller enkle erstatninger, er sed ikke nødvendig. Bash kan gjøre manipulasjonen.

For eksempel:
Når du bytter ut en fosslinux.gif med .mp4, sed er ikke nødvendig.
For å utføre prosessen ved hjelp av bash, bruk den kodede teksten nedenfor:

# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Erstatt .gif med .mp4 generated_file_name = $ filnavn /.gif /.$ new_extension ekko generert_filnavn

Bytte ut streng med sed

sed kan refereres til som en stream editor. Sed kan erstatte en streng i filer. La oss se på et eksempel på en fil som heter singleboardbytes.txt som har følgende informasjon:
Foss Linux er et flott læringssted for alle Linux-brukere. Ta en titt på artikler publisert av Foss Linux på deres side.

Nå fra filen vår, må vi erstatte ordet “nettstedet”Med“nettsted”Og gi filen nytt navn fosslinux.tekst.

Forstå sed-syntaksen

sed -is / søkestreng / erstatstreng / 'filnavn sed - er kommandoen som brukes i utførelsen av syntaksen ovenfor '-Jeg'- brukes til endring av innholdet i originalfilen med en erstatningsstrenghjelp når søkeverdien eksisterer i filen. 's'- dette er erstatningskommandoen'søkestreng'- dette representerer strengverdien som skal søkes etter erstatning i originalfilen'erstatt_streng'- dette representerer strengverdien som brukes til å erstatte den søkte verdien. Strengen skal samsvare med strengen som er funnet av 'search_string' -kommandoen. 'filnavn'- dette er filnavnet der erstatningen skal brukes.

Utfør følgende kommando i terminalen din:

sed 's / site / website / g' singleboardbytes.txt> fosslinux.tekst

Erstatning av streng ved bruk av sed

Merk: Du kan også utføre kommandoen ovenfor ved å sette den på som et bash-skript.
Skifte ut med -Jeg kommando

Etter å ha kjørt kommandoen, er neste trinn å erstatte ved hjelp av -Jeg kommando. -Jeg er en representasjon for "på plass", noe som betyr at filen bare erstattes, og det er ingen oppretting av ekstra filer. Bruk vårt eksempel ovenfor, og kjør følgende kommando:

sed -i 's / site / website / g' singleboardbytes.tekst

Skifte ut med kommandoen -i

Fra figuren nedenfor kan du se et utropstegn som sier, Filen “/ home / tuts / singleboardbytes.txt endret på disk.”Dette viser at endringene er gjort.

Endringer gjort på singleboardbytes.tekst

Figuren nedenfor er filen som inneholder endringene som ble gjort i forrige trinn, både i navnet på filen (singleboardbytes.txt til fosslinux.txt) og ordet nettstedet er endret til nettsted.

Endelig endring etter å ha kjørt sed-kommandoen

Bruke en variabel som søkeverdier og erstatninger

Med litt interpolering kan variabler brukes til å gjøre strengutskifting. Det første sed-argumentet, i dette tilfellet, må bruke dobbelt anførselstegn i stedet for enkelt anførselstegn. For eksempel vil koden din være lik den nedenfor:

tuts () lokalt søk = $ 1 lokalt erstatt = $ 2 # Legg merke til dobbel anførselstegn sed -i "s / $ search / $ erstatt / g" singleboardbytes.tekst 

Bruke en variabel som søkeverdier og erstatninger

sed har to smaker, nemlig: FreeBSD og Linux sed. Linux-distroene bruker Linux-sed mens OS X-brukere bruker FreeBSD-sed. Disse smakene er ganske forskjellige, og man kan derfor ikke overføre kommandoer fra en sed smak til en annen.

For eksempel, mens du erstatter filens innhold ved hjelp av FreeBSD, bør en sikkerhetskopi utføres med .bak utvidelse. Eller du kan starte en sikkerhetskopi med bruk av tomme par anførselstegn umiddelbart etter -i-notasjonen som vist i bash-syntaksen nedenfor:

tuts () lokalt søk = $ 1 lokalt erstatt = $ 2 sed -i "" "s / $ søk / $ erstatt / g" singleboardbytes.tekst 

Hvis en sikkerhetskopi ikke blir gjort mens du bruker FreeBSD som illustrert i syntakskoden ovenfor, vil du komme i en feil som den som vises nedenfor:

sed: 1: "/ Brukere / bruker / sti / tuts ...": ekstra tegn på slutten av h-kommandoen

Hvordan erstatte en fil og matche siffermønsteret ved hjelp av sed-kommandoen

Hvis du kjører skriptet, vil det bli søkt etter alt numerisk innhold i en fil. Deretter vil innholdet bli erstattet av å legge til $ før tallene.

#!/ bin / bash # Kontroller at verdien på kommandolinjens argument eksisterer eller ikke hvis [$ 1 != ""]; deretter # Søk i alle strenger som inneholder sifre, og legg til $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi

Bytte ut en streng ved hjelp av awk-kommandoen

I dette tilfellet skal vi bruke kommandoen awk i stedet for kommandoen sed for å erstatte innholdet på en fil. Forskjellen mellom disse kommandoene er at sed-kommandoen oppdaterer originalfilen direkte, noe som ikke er tilfelle med awk-kommandoen.

#!/ bin / bash # Kontroller at verdien på kommandolinjens argument eksisterer eller ikke hvis [$ 1 != ""]; deretter # Søk i alle strenger basert på dato awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.tekst $ 1 fi

Konklusjon

Ovennevnte eksempler er avgjørende for din fremgang i å lære å erstatte en streng i Bash. Derfor, for å være god på det, må du øve regelmessig. Å søke og erstatte streng i en fil kan virke komplisert, men du vil finne det mye mer håndterlig når du følger retningslinjene våre riktig.

Et poeng å merke seg er at kjøring av kommandoene til tider kan virke mer håndterbare, men du bør være forsiktig så du ikke ødelegger sed. Når du skriver inn feil kommandoer, vil du ødelegge datamaskinen din og forårsake flere problemer som tap av data. For å være trygg, kopier og lim alltid koden slik den er til terminalen din. Dette forhindrer stavefeil som kan ødelegge maskinen din. Vi håper denne artikkelen hjalp deg med å lære hvordan du bytter ut en streng i bash ved hjelp av denne artikkelen.

SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...
Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...