Lär dig Linux

Byta ut sträng i Bash

Byta ut sträng i Bash

Bash är en UNIX-skalkompatibel kommandoprocess vars huvuduppgift är att manipulera strängar som utförs i en skalmiljö. Programmerare uppmanas ibland att arbeta med olika filer. De kan lägga till, ta bort och ersätta delar eller hela filen så att de passar deras arbete. Detta kräver kunskapen om att ersätta sträng i bash. Datalagring kan vara tillfällig eller permanent, beroende på vilken typ av data. Filsträngen är viktig när du ersätter filinnehållet.

Byta ut sträng i Bash

sed är viktigt och kommer till hands för att hjälpa till att ersätta strängar i en fil med bash-skript. Strängredigeraren kan användas på olika sätt för att ersätta filinnehåll i bash. En alternativ men ljudsträngredigerare är ok som kan spelas in när du byter ut strängvärde från en fil med bash. Den här artikeln visar med hjälp av exempel hur filinnehållet kan ersättas i bash. Observera att kunskap i regexmönster också kan vara av stort värde när du byter ut sträng i bash.

Bash strängmanipulation

När du gör mindre eller enkla utbyten krävs inte sed. Bash kan göra manipuleringen.

Till exempel:
När du byter ut en fosslinux.gif med .mp4, sed krävs inte.
För att utföra processen med bash, använd den kodade texten nedan:

# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Ersätt .gif med .mp4 generated_file_name = $ filnamn /.gif /.$ new_extension echo generated_file_name

Byta ut sträng med sed

sed kan kallas en strömredigerare. Sed kan ersätta en sträng i filer. Låt oss titta på ett exempel på en fil som heter singleboardbytes.txt som har följande information:
Foss Linux är en bra inlärningssida för alla Linux-användare. Kolla in artiklar publicerade av Foss Linux på deras webbplats.

Nu från vår fil måste vi ersätta ordet “webbplats”Med“hemsida”Och byta namn på filen till fosslinux.Text.

Förstå sed-syntaxen

sed -is / söksträng / ersätt sträng / filnamn sed - är kommandot som används vid utförandet av ovanstående syntax '-i'- används för att modifiera innehållet i originalfilen med ett ersättningsstränghjälpmedel när sökvärdet finns i filen. ''s'- detta är ersättningskommandot'söksträng'- detta representerar strängvärdet som ska sökas för ersättning i originalfilen'ersätt_sträng'- detta representerar strängvärdet som används för att ersätta det sökta värdet. Strängen ska matcha strängen som hittats av kommandot 'search_string'. ''filnamn'- det här är filnamnet där ersättningen kommer att tillämpas.

Utför följande kommando i din terminal:

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

Strängbyte med sed

Obs! Du kan också utföra kommandot ovan genom att sätta på det som ett bash-skript.
Byta ut med hjälp av -i kommando

Efter att ha kört kommandot är nästa steg att ersätta med -i kommando. -i är en representation för "på plats", vilket betyder att filen bara ersätts och det finns ingen skapelse av extra filer. Kör följande kommando med vårt exempel ovan:

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

Ersätt med kommandot -i

Från figuren nedan kan du se ett utropstecken som säger, Filen “/ home / tuts / singleboardbytes.txt har ändrats på disken.”Detta visar att ändringarna har gjorts framgångsrikt.

Ändringar gjorda i singleboardbytes.Text

Bilden nedan är filen som innehåller ändringarna som gjordes i föregående steg, både i filnamnet (singleboardbytes).txt till fosslinux.txt) och ordet webbplats har ändrats till hemsida.

Slutlig ändring efter körning av kommandot sed

Använda en variabel som sökvärden och ersättare

Med lite interpolering kan variabler användas för att byta ut strängar. Det första sed-argumentet, i detta fall, måste använda dubbla citat istället för enstaka citat. Till exempel kommer din kod att likna den nedan:

tuts () lokal sökning = $ 1 lokal ersätt = $ 2 # Observera de dubbla citaten sed -i "s / $ search / $ ersätt / g" singleboardbytes.Text 

Använda en variabel som sökvärden och ersättare

sed har två smaker, nämligen: FreeBSD och den Linux sed. Linux-distros använder Linux-sed medan OS X-användare använder FreeBSD-sed. Dessa smaker är helt olika, och därför kan man inte överföra kommandon från en sed-smak till en annan.

När du till exempel ersätter filens innehåll med FreeBSD, bör en säkerhetskopia utföras med .bakförlängning. Eller så kan du initiera en säkerhetskopia med hjälp av tomma par citat direkt efter -i-notationen som visas i bash-syntaksen nedan:

tuts () lokal sökning = $ 1 lokal ersätt = $ 2 sed -i "" "s / $ sök / $ ersätt / g" singleboardbytes.Text 

Om en säkerhetskopia inte görs när FreeBSD används som illustrerat i syntaxkoden ovan, kommer du att hamna i ett fel som det som visas nedan:

sed: 1: "/ Användare / användare / sökväg / tuts ...": extra tecken i slutet av h-kommandot

Hur man byter ut en fil och matchar sifframönstret med kommandot sed

Om du lyckas köra skriptet kommer en sökning efter allt numeriskt innehåll som finns i en fil att utföras. Sedan kommer innehållet att ersättas med att lägga till $ före siffrorna.

#!/ bin / bash # Kontrollera att kommandoradsargumentvärdet finns eller inte om [$ 1 != ""]; sedan # Sök i alla strängar som innehåller siffror och lägg till $ sed -i's / \ b [0-9] \ 5 \ \ b / $ & / g '$ 1 fi

Byta ut en sträng med kommandot awk

I det här fallet ska vi använda kommandot awk istället för kommandot sed för att ersätta en fils innehåll. Skillnaden mellan dessa kommandon är att sed-kommandot uppdaterar originalfilen direkt, vilket inte är fallet med awk-kommandot.

#!/ bin / bash # Kontrollera att kommandoradsargumentvärdet finns eller inte om [$ 1 != ""]; sedan # Sök i alla strängar baserat på datum awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi

Slutsats

Ovanstående exempel är viktiga för dina framsteg när du lär dig att byta ut en sträng i Bash. För att vara bra på det måste du därför träna regelbundet. Att söka och ersätta strängar i en fil kan tyckas komplicerat, men du kommer att finna det mycket mer hanterbart när du följer våra riktlinjer korrekt.

En sak att notera är att körning av kommandon ibland kan tyckas mer hanterbar, men du bör vara försiktig så att du inte skapar kaos från sed. När du matar in fel kommandon kommer du att bryta din dator och orsaka mer problem som dataförlust. För att vara säker, kopiera och klistra alltid in koden som den är till din terminal. Detta förhindrar stavfel som kan bryta din maskin. Vi hoppas att den här artikeln hjälpte dig att lära dig att byta ut en sträng i bash med den här artikeln.

Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...
Hur du fångar och strömmar din spelsession på Linux
Tidigare betraktades spel bara som en hobby, men med tiden såg spelindustrin en enorm tillväxt när det gäller teknik och antalet spelare. Spelpubliken...
Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...