Lær Linux

Udskiftning af streng i bash

Udskiftning af streng i bash

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

Udskiftning af streng ved brug af sed

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

Udskiftning ved hjælp af kommandoen -i

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.

Ændringer foretaget i singleboardbytes.txt

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.

Endelig ændring efter kørsel af sed-kommandoen

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

Brug af en variabel som søgningsværdier og erstatninger

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.

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...