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
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
Fra figuren nedenfor kan du se et utropstegn som sier, Filen “/ home / tuts / singleboardbytes.txt endret på disk.”Dette viser at endringene er gjort.
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.
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
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.