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
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
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.
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.
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
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.