Hvordan bytte en streng i en fil i Bash

How Replace String File Bash



Som programmerer må du kanskje jobbe med forskjellige filtyper for å lagre data midlertidig eller permanent. Noen ganger må du kanskje bytte ut en del av filen eller endre det bestemte innholdet i filen. For å erstatte innhold i en fil, må du søke etter den bestemte filstrengen. De men kommando brukes til å erstatte en streng i en fil ved hjelp av et bash -skript. Denne kommandoen kan brukes på forskjellige måter for å erstatte innholdet i en fil i bash. De 'Awk '-Kommandoen kan også brukes til å erstatte strengen i en fil. Denne opplæringen viser deg hvordan du erstatter en strengverdi fra en fil ved hjelp av et bash -script. En tekstfil med navn Sales.txt med følgende innhold er opprettet for å vise erstatningsoperasjonene.

Sales.txt







Dato Beløpsområde

01.01.2020 60000 Dhaka
10.02.2020 76000 Rajshahi
21.03.2020 54000 Khulna
15.04.2020 78000 Chandpur
17.05.2020 45000 Bogra
06.06.2020 67000 Comilla

Erstatt streng i en fil med kommandoen `sed`

Den grunnleggende syntaksen til ` sed `kommando for å erstatte den bestemte strengen i en fil er gitt nedenfor.



Syntaks



sed -Jeg 's/search_string/replace_string/'filnavn

Hver del av syntaksen ovenfor er forklart nedenfor.





'-Jeg' alternativet brukes til å endre innholdet i den originale filen med erstatningsstrengen hvis søkestrengen finnes i filen.

'S' indikerer erstatningskommandoen.



'Search_string' inneholder strengverdien som skal søkes i filen etter erstatning.

'Erstatt_streng' inneholder strengverdien som skal brukes til å erstatte innholdet i filen som samsvarer med 'Search_string' verdi.

'filnavn' inneholder filnavnet der søk og erstatning skal brukes.

Eksempel 1: Erstatt fil med kommandoen 'sed'

I det følgende skriptet vil søk-og-erstatt-teksten bli tatt fra brukeren. Hvis søkestrengen finnes i ‘Sales.txt’, blir den erstattet av erstatningsstrengen. Her vil det bli utført et saksfølsomt søk.

#!/bin/bash

# Tilordne filnavnet
filnavn='Sales.txt'

# Ta søkestrengen
lese -s 'Skriv inn søkestrengen:'Søk

# Ta erstatningsstrengen
lese -s 'Skriv inn erstatningsstrengen:'erstatte

hvis [[ $ søk !='' && $ erstatte !='' ]];deretter
sed -Jeg er/$ søk/$ erstatte/ ' $ filnavn
være

Produksjon

Eksempel 2: Erstatt fil med ‘sed’ kommandoen med ‘g’ og ‘i’ flagg

Følgende skript vil fungere som det forrige eksemplet, men søkestrengen vil bli søkt globalt etter 'g'-flagget, og det ufølsomme søket vil bli utført etter' i'-flagget.

#!/bin/bash

# Ta søkestrengen
lese -s 'Skriv inn søkestrengen:'Søk

# Ta erstatningsstrengen
lese -s 'Skriv inn erstatningsstrengen:'erstatte

hvis [[ $ søk !='' && $ erstatte !='' ]];deretter
sed -Jeg er/$ søk/$ erstatte/gi' $ 1
være

Produksjon

Eksempel 3: Erstatt fil med ‘sed’ kommando og matchende siffermønster

Følgende skript søker etter alt numerisk innhold i en fil og erstatter innholdet ved å legge til '$' symbolet i begynnelsen av tallene.

#!/bin/bash

# Kontroller at kommandolinjens argumentverdi eksisterer eller ikke
hvis [ $ 1 !='' ];deretter
# Søk i alle strengen som inneholder sifre, og legg til $
sed -Jeg 's/ b [0-9] {5 } b/$ &/g' $ 1
være

Produksjon

Erstatt streng i en fil med kommandoen `awk`

Den ' awk ' kommando er en annen måte å erstatte strengen i en fil, men denne kommandoen kan ikke oppdatere den opprinnelige filen direkte som ' men kommando.

Eksempel 4: Erstatt fil med ‘awk’ kommando

Følgende skript lagrer det oppdaterte innholdet i temp.txt filen som vil bli omdøpt av den opprinnelige filen.

#!/bin/bash

# Kontroller at kommandolinjens argumentverdi eksisterer eller ikke
hvis [ $ 1 !='' ];deretter
# Søk i alle strenger basert på dato
awk '{sub ('02/06/2020', '12/06/2020')} 1 ' $ 1 >temp.txt&& mvtemp.txt$ 1
være

Produksjon

Konklusjon

Denne artikkelen viste deg hvordan du bruker bash -skript til å erstatte bestemte strenger i en fil. Oppgaven med å erstatte en streng i en fil skal bli lettere for deg etter å ha praktisert eksemplene ovenfor.