01. Generell syntaks for sed
02. Erstatt streng i fil med bash sed -skript
03. sed g og jeg kommandoer for global og sak ufølsom
04. sed siffer matching
05. Generell syntaks for awk
06. Erstatt streng i fil med bash awk -skript
07. Erstatt streng i filen med ren bashskripting
08. Bytt ut streng i filen med Perl en foring
Eksempler på data for erstatning for bashstreng
En tekstfil som heter Salg.tekst Med følgende innhold opprettes for å vise erstatningsoperasjonene.
Salg.tekst
Generell syntaks for SED: Erstatt streng i en fil
Den grunnleggende syntaksen til 'sed'Kommando for å erstatte den aktuelle strengen i en fil er gitt nedenfor.
Syntaks
sed -i 's/search_string/erstatt_string/' filnavn
Hver del av syntaks ovenfor er forklart nedenfor.
'-Jeg' Alternativet brukes til å endre innholdet i den opprinnelige filen med erstatningsstrengen hvis søkestrengen finnes i filen.
'S' Angir erstatningskommandoen.
'Search_string' Inneholder strengverdien som vil bli søkt i filen for erstatning.
'erstatte_string' Inneholder strengverdien som vil bli brukt til å erstatte innholdet i filen som samsvarer med 'Search_string' verdi.
'filnavn' Inneholder filnavnet der søket og erstattet blir brukt.
Eksempel 1: Erstatt fil med 'Sed' -kommandoen
I det følgende skriptet vil den søk-og-erstatte teksten bli hentet fra brukeren. Hvis søkestrengen eksisterer i 'salg.txt ', så blir den erstattet av erstatningsstrengen. Her vil det bli utført et saksfølsomt søk.
#!/bin/bash
# Tildel filnavnet
filnavn = "Salg.tekst"
# Ta søkestrengen
Les -P "Skriv inn søkestrengen:" Søk
# Ta erstatningsstrengen
Les -P "Skriv inn erstatningsstrengen:" Erstatt
Hvis [[$ Search != "" && $ erstatt != ""]]; deretter
sed -i "s/$ search/$ erstatning/" $ filnavn
fi
Produksjon:
Eksempel 2: Erstatt fil med 'Sed' -kommandoen med 'G' og 'I' Flag
Følgende skript fungerer som forrige eksempel, men søkestrengen vil bli søkt globalt etter 'G' -flagget, og det case-ufølsomme søket vil bli gjort for 'I' -flagget.
#!/bin/bash
# Ta søkestrengen
Les -P "Skriv inn søkestrengen:" Søk
# Ta erstatningsstrengen
Les -P "Skriv inn erstatningsstrengen:" Erstatt
Hvis [[$ Search != "" && $ erstatt != ""]]; deretter
sed -i "s/$ search/$ erstatning/gi" $ 1
fi
Produksjon:
Eksempel 3: Erstatt fil med 'sed' kommando og matchende siffermønster
Følgende skript vil søke etter alt numerisk innhold i en fil og vil erstatte innholdet ved å legge til '$' symbol i begynnelsen av tallene.
#!/bin/bash
# Kontroller kommandolinjens argumentverdi eksisterer eller ikke
Hvis [$ 1 != ""]; deretter
# Søk i all streng som inneholder sifre og legg til $
sed -i 's/\ b [0-9] \ 5 \ \ b/$ &/g' $ 1
fi
Produksjon:
Erstatt streng i en fil med 'awk' -kommando
'awk ' Kommando er en annen måte å erstatte strengen i en fil, men denne kommandoen kan ikke oppdatere den opprinnelige filen direkte som 'sed ' kommando.
Eksempel 4: Erstatt fil med 'AWK' -kommando
Følgende skript lagrer det oppdaterte innholdet i temp.tekst fil som vil bli omdøpt av den opprinnelige filen.
#!/bin/bash
# Kontroller kommandolinjens argumentverdi eksisterer eller ikke
Hvis [$ 1 != ""]; deretter
# Søk i all streng basert på dato
awk 'sub ("02/06/2020", "12/06/2020") print' $ 1> temp.txt && mv temp.TXT $ 1
fi
Produksjon:
I eksemplet ovenfor brukes 'awk' -kommando til å søke etter en streng “02/06/2020”, som er den siste datoen i vår prøvefil. Den matchede strengen blir erstattet av en ny streng “12/06/2020”. Strengen som resulterer i om det erstattes eller ikke skrives ut på hver linje.
Eksempel 5: Erstatt streng i filen med ren bashskripting
I dette eksemplet vil vi gjøre den samme jobben med en bash mens Loop og en Bash String erstatningskommando. Vi vil skrive utgangen til en tmp fil og erstatt originalen på slutten av skriptet. Se koden nedenfor:
#!/bin/bash
mens du leser linjen; gjøre
# Bytt ut alle forekomster på linje med Khulna med Dhaka
ekko $ linje // khulna/dhaka
Ferdig < Sales.txt > /TMP/Salg.o.tekst
MV /TMP /Salg.o.txt salg.tekst
Du kan se at Echo -kommandoen vil gjøre en erstatning i linjevariabelen, ettersom skriptet leser hver linje i tekstfilen, og erstatte alle forekomster av Khulna med den nye strengen Dhaka. Mens sløyfen leser fra inndatafilen Salg.tekst og skriver til utdatafilen /TMP/Salg.o.tekst. Endelig erstatter den midlertidige utgangsfilen den opprinnelige filen med mv kommando.
Produksjon:
Eksempel 6: Erstatt streng i filen med Perl One Liner
Denne oppgaven er faktisk super enkel med Perl. Perl er et gammelt, mindre populært språk, men ekstremt kraftig. Dette kan gjøres med en linjekommando i base -kommandolinjen:
perl -pi.Bak -e 'S/Dhaka/Bogra/G' Salg.tekst-pi.Bak ber Perl om å behandle filen på plass og også opprette en sikkerhetskopifil med .bakforlengelse. Erstatningen vil være alle tilfeller av Dhaka til Bogra Som den nye teksten. Her kan du se den enkle utgangen fra denne kommandoen:
PRODUKSJON:
Konklusjon
Denne artikkelen viste deg hvordan du bruker bashskript for å erstatte strenger i en fil med søk og erstatte på kommandolinjen i bash. Det er mange måter å gjøre dette på, inkludert med kommandoer SED, AWK, Perl; Du kan bruke Native Bash Scripting med løkker og regex, og det er flere måter selv ikke diskutert her. Bash og Linux har mange måter å gjøre den samme jobben.