Bash er en UNIX shell-kompatibel kommandoproces, hvis hovedopgave er at manipulere strenge udført i et shell-miljø. Programmører opfordres til tider til at arbejde på forskellige filer. De kan tilføje, slette og udskifte dele eller hele filen, så de passer til deres arbejde. Dette kræver viden om at erstatte streng i bash. Datalagring kan være midlertidig eller permanent afhængigt af dataens art. Filstreng er vigtig, når du udskifter filindhold.
Udskiftning af streng i bash
sed er afgørende og er praktisk til at hjælpe med at erstatte strenge i en fil med bash-scripts. Strengeditoren kan bruges på forskellige måder til at erstatte filindholdet i bash. En alternativ, men lydstrengeditor er awk, som kan bringes i spil, når du erstatter strengværdi fra en fil ved hjælp af bash. Denne artikel viser ved hjælp af eksempler, hvordan filindholdet kan erstattes bash. Bemærk, at viden i regex-mønstre også kan være af stor værdi, når du udskifter streng i bash.
Bash strengmanipulation
Når man udfører mindre eller enkle udskiftninger, er sed ikke påkrævet. Bash kan udføre manipulationen.
For eksempel:
Når du udskifter en fosslinux.gif med .mp4, sed er ikke påkrævet.
For at udføre processen ved hjælp af bash skal du bruge den kodede tekst nedenfor:
# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Udskift .gif med .mp4 generated_file_name = $ filnavn /.gif /.$ new_extension ekko genereret_filnavn
Udskiftning af streng med sed
sed kan kaldes en stream-editor. Sed kan erstatte en streng i filer. Lad os se på et eksempel på en fil kaldet singleboardbytes.txt, der har følgende oplysninger:
Foss Linux er et fantastisk læringssted for enhver Linux-bruger. Tjek artikler udgivet af Foss Linux på deres websted.
Nu fra vores fil skal vi erstatte ordet “websted”Med“internet side”Og omdøb filen til fosslinux.txt.
Forståelse af sed-syntaksen
sed -i 's / search_string / erstatte_string /' filnavn sed - er kommandoen, der bruges i udførelsen af ovenstående syntaks '-jeg'- bruges til ændring af indholdet i den originale fil med en erstatningsstrenghjælp, hver gang der findes en søgeværdi i filen. ''s'- dette er erstatningskommandoen'søgestreng'- dette repræsenterer strengværdien, der skal søges efter erstatning i den originale fil'erstat_streng'- dette repræsenterer strengværdien, der bruges til at erstatte den søgte værdi. Strengen skal matche den streng, der findes ved kommandoen 'search_string'. ''filnavn'- dette er filnavnet, hvorved erstatningen vil blive anvendt.
Udfør følgende kommando i din terminal:
sed 's / site / website / g' singleboardbytes.txt> fosslinux.txt
Bemærk: Du kan også udføre kommandoen ovenfor ved at sætte den på som et bash-script.
Udskiftning med -jeg kommando
Efter kørsel af kommandoen er det næste trin at udskifte ved hjælp af -jeg kommando. -jeg er en repræsentation for "på plads", hvilket betyder at filen kun erstattes, og der er ingen oprettelse af ekstra filer. Brug vores eksempel ovenfor til at køre følgende kommando:
sed -i's / site / website / g 'singleboardbytes.txt
Fra nedenstående figur kan du se et udråbstegn, der siger, Filen “/ home / tuts / singleboardbytes.txt ændret på disk.”Dette viser, at ændringerne er foretaget med succes.
Figuren nedenfor er den fil, der indeholder de ændringer, der blev foretaget i det foregående trin, både til filens navn (singleboardbytes).txt til fosslinux.txt) og ordet websted er blevet ændret til internet side.
Brug af en variabel som søgningsværdier og erstatninger
Med lidt interpolering kan variabler bruges til at udskifte streng. Det første sed-argument skal i dette tilfælde bruge dobbelt anførselstegn i stedet for enkelt anførselstegn. For eksempel vil din kode svare til den nedenfor:
tuts () lokal søgning = $ 1 lokal erstat = $ 2 # Bemærk de dobbelte anførselstegn sed -i "s / $ search / $ erstatter / g" singleboardbytes.txt
sed har to varianter, nemlig: FreeBSD og Linux sed. Linux-distroerne bruger Linux-sed, mens OS X-brugere bruger FreeBSD-sed. Disse varianter er helt forskellige, og man kan derfor ikke overføre kommandoer fra en sed smag til en anden.
For eksempel, mens du udskifter filens indhold ved hjælp af FreeBSD, skal der foretages en sikkerhedskopi ved hjælp af .bak udvidelse. Eller du kan starte en sikkerhedskopi med brug af tomme citatpar umiddelbart efter -i-notationen som vist i bash-syntaksen nedenfor:
tuts () lokal søgning = $ 1 lokal erstat = $ 2 sed -i "" "s / $ søg / $ erstatter / g" singleboardbytes.txt
Hvis der ikke foretages en sikkerhedskopi, mens du bruger FreeBSD som illustreret i syntakskoden ovenfor, vil du falde i en fejl som vist nedenfor:
sed: 1: "/ Brugere / bruger / sti / tuts ...": ekstra tegn i slutningen af h-kommandoen
Sådan udskiftes en fil og matcher cifret mønster ved hjælp af kommandoen sed
Hvis du med succes kører scriptet, udføres en søgning efter alt numerisk indhold, der findes i en fil. Derefter erstattes indholdet ved at tilføje $ før tallene.
#!/ bin / bash # Kontroller, at kommandolinjens argumentværdi findes, eller ikke hvis [$ 1 != ""]; derefter # Søg i alle strenge, der indeholder cifre, og tilføj $ sed -i 's / \ b [0-9] \ 5 \ \ b / $ & / g' $ 1 fi
Udskiftning af en streng ved hjælp af kommandoen awk
I dette tilfælde bruger vi kommandoen awk i stedet for kommandoen sed til at erstatte en fils indhold. Forskellen mellem disse kommandoer er, at kommandoen sed opdaterer den originale fil direkte, hvilket ikke er tilfældet med kommandoen awk.
#!/ bin / bash # Kontroller, at kommandolinjens argumentværdi findes, eller ikke hvis [$ 1 != ""]; derefter # Søg i alle strenge baseret på dato awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi
Konklusion
Ovenstående eksempler er vigtige for dine fremskridt med at lære at udskifte en streng i Bash. Derfor er du nødt til at øve regelmæssigt for at være god til det. Søgning og erstatning af streng i en fil kan virke kompliceret, men du finder det meget mere håndterbart, når du følger vores retningslinjer korrekt.
Et punkt at bemærke er, at kørsel af kommandoer til tider kan virke mere håndterbare, men du skal være forsigtig med ikke at skabe kaos fra sed. Når du indtaster de forkerte kommandoer, vil du bryde din computer og forårsage flere problemer som datatab. For at være sikker skal du altid kopiere og indsætte koden, som den er til din terminal. Dette forhindrer stavefejl, der kan ødelægge din maskine. Vi håber, at denne artikel hjalp dig med at lære, hvordan du udskifter en streng i bash ved hjælp af denne artikel.