Hur man byter ut en sträng i en fil i Bash

How Replace String File Bash



Som programmerare kan du behöva arbeta med olika typer av filer för att lagra data tillfälligt eller permanent. Ibland kan du behöva byta ut en del av filen eller ändra det specifika innehållet i filen. För att ersätta innehåll i en fil måste du söka efter den specifika filsträngen. De men kommando används för att ersätta valfri sträng i en fil med ett bash -skript. Detta kommando kan användas på olika sätt för att ersätta innehållet i en fil i bash. De ’Oj ’-Kommandot kan också användas för att ersätta strängen i en fil. Denna handledning visar dig hur du byter ut ett strängvärde från en fil med ett bash -skript. En textfil med namnet Sales.txt med följande innehåll skapas för att visa ersättningsoperationerna.

Sales.txt







Datum Belopp Område

01/01/2020 2020 60000 Dhaka
10/02/2020 76000 Rajshahi
21/03/2020 54000 Khulna
15/04/2020 78000 Chandpur
17/05/2020 45000 Bogra
02/06/2020 67000 Comilla

Ersätt sträng i en fil med kommandot 'sed'

Den grundläggande syntaxen för ` sed `kommando för att ersätta den specifika strängen i en fil ges nedan.



Syntax



sed -i 's/search_string/replace_string/'filnamn

Varje del av ovanstående syntax förklaras nedan.





'-I' alternativet används för att ändra innehållet i originalfilen med ersättningssträngen om söksträngen finns i filen.

'S' anger ersättningskommandot.



'Search_string' innehåller strängvärdet som ska sökas i filen efter ersättning.

'Ersätt_sträng' innehåller strängvärdet som ska användas för att ersätta innehållet i filen som matchar 'Search_string' värde.

'filnamn' innehåller filnamnet där sökningen och ersättningen kommer att tillämpas.

Exempel 1: Ersätt fil med kommandot 'sed'

I följande skript tas sök-och-ersätt-texten från användaren. Om söksträngen finns i 'Sales.txt' kommer den att ersättas av ersättningssträngen. Här kommer en skiftlägeskänslig sökning att utföras.

#!/bin/bash

# Tilldela filnamnet
filnamn='Sales.txt'

# Ta söksträngen
läsa -s 'Ange söksträngen:'Sök

# Ta ersättningssträngen
läsa -s 'Ange ersättningssträngen:'byta ut

om [[ $ sökning !='' && $ ersätt !='' ]];sedan
sed -i s/$ sökning/$ ersätt/ ' $ filnamn
vara

Produktion

Exempel 2: Ersätt fil med kommandot 'sed' med 'g' och 'i' flagga

Följande skript fungerar som det föregående exemplet, men söksträngen kommer att sökas globalt efter 'g' -flaggan och den skiftlägeskänsliga sökningen görs efter 'i' -flaggan.

#!/bin/bash

# Ta söksträngen
läsa -s 'Ange söksträngen:'Sök

# Ta ersättningssträngen
läsa -s 'Ange ersättningssträngen:'byta ut

om [[ $ sökning !='' && $ ersätt !='' ]];sedan
sed -i s/$ sökning/$ ersätt/ge' $ 1
vara

Produktion

Exempel 3: Ersätt fil med 'sed' kommando och matchande sifframönster

Följande skript söker efter allt numeriskt innehåll i en fil och ersätter innehållet genom att lägga till '$' symbolen i början av siffrorna.

#!/bin/bash

# Kontrollera att kommandoradsargumentets värde finns eller inte
om [ $ 1 !='' ];sedan
# Sök igenom alla strängar som innehåller siffror och lägg till $
sed -i 's/ b [0-9] {5 } b/$ &/g' $ 1
vara

Produktion

Ersätt sträng i en fil med kommandot 'awk'

Den ‘ oj ' kommando är ett annat sätt att ersätta strängen i en fil, men det här kommandot kan inte uppdatera den ursprungliga filen direkt som ' men kommando.

Exempel 4: Ersätt fil med kommandot ‘awk’

Följande skript lagrar det uppdaterade innehållet i temp.txt fil som kommer att byta namn på den ursprungliga filen.

#!/bin/bash

# Kontrollera att kommandoradsargumentets värde finns eller inte
om [ $ 1 !='' ];sedan
# Sök i alla strängar baserat på datum
ock '{sub ('02/06/2020', '12/06/2020')} 1 ' $ 1 >temp.txt&& mvtemp.txt$ 1
vara

Produktion

Slutsats

Den här artikeln visade dig hur du använder bash -skript för att ersätta vissa strängar i en fil. Uppgiften att ersätta en sträng i en fil bör bli lättare för dig efter att ha övat på ovanstående exempel.