Sales.txt
Dato Beløb Områ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
02/06/2020 67000 Comilla
Udskift streng i en fil med kommandoen 'sed'
Den grundlæggende syntaks for ` sed `kommando til udskiftning af den særlige streng i en fil er angivet nedenfor.
Syntaks
sed -jeg 's/search_string/replace_string/'filnavn
Hver del af ovenstående syntaks forklares nedenfor.
'-jeg' indstilling bruges til at ændre indholdet af den originale fil med erstatningsstrengen, hvis søgestrengen findes i filen.
'S' angiver erstatningskommandoen.
'Search_string' indeholder den strengværdi, der skal søges i filen efter erstatning.
'Erstat_streng' indeholder den strengværdi, der skal bruges til at erstatte indholdet af filen, der matcher 'Search_string' værdi.
'filnavn' indeholder filnavnet, hvor søgning og udskiftning vil blive anvendt.
Eksempel 1: Erstat fil med kommandoen 'sed'
I det følgende script vil søg-og-erstat-teksten blive taget fra brugeren. Hvis søgestrengen findes i 'Sales.txt', erstattes den af erstatningsstrengen. Her vil der blive foretaget en sagsfølsom søgning.
#!/bin/bash# Tildel filnavnet
filnavn='Sales.txt'
# Tag søgestrengen
Læs -s 'Indtast søgestrengen:'Søg
# Tag erstatningsstrengen
Læs -s 'Indtast erstatningsstrengen:'erstatte
hvis [[ $ søgning !='' && $ udskift !='' ]];derefter
sed -jeg 's/$ søgning/$ udskift/ ' $ filnavn
være
Produktion
Eksempel 2: Erstat fil med 'sed' kommandoen med 'g' og 'i' Flag
Det følgende script fungerer som det foregående eksempel, men søgestrengen søges globalt efter 'g'-flag, og den ufølsomme søgning foretages efter' i'-flag.
#!/bin/bash# Tag søgestrengen
Læs -s 'Indtast søgestrengen:'Søg
# Tag erstatningsstrengen
Læs -s 'Indtast erstatningsstrengen:'erstatte
hvis [[ $ søgning !='' && $ udskift !='' ]];derefter
sed -jeg 's/$ søgning/$ udskift/give' $ 1
være
Produktion
Eksempel 3: Erstat fil med 'sed' kommando og matchende cifermønster
Det følgende script søger efter alt numerisk indhold i en fil og erstatter indholdet ved at tilføje '$' symbol i begyndelsen af tallene.
#!/bin/bash# Kontroller, at kommandolinjens argumentværdi eksisterer eller ej
hvis [ $ 1 !='' ];derefter
# Søg i alle strenge, der indeholder cifre, og tilføj $
sed -jeg 's/ b [0-9] {5 } b/$ &/g' $ 1
være
Produktion
Erstat streng i en fil med kommandoen 'awk'
Det ' awk ’ kommando er en anden måde at erstatte strengen i en fil, men denne kommando kan ikke opdatere den originale fil direkte som ' men kommando.
Eksempel 4: Erstat fil med 'awk' kommando
Følgende script gemmer det opdaterede indhold i temp.txt fil, der vil blive omdøbt af den originale fil.
#!/bin/bash# Kontroller, at kommandolinjens argumentværdi eksisterer eller ej
hvis [ $ 1 !='' ];derefter
# Søg i alle strenge baseret på dato
awk '{sub ('02/06/2020', '12/06/2020')} 1 ' $ 1 >temp.txt&& mvtemp.txt$ 1
være
Produktion
Konklusion
Denne artikel viste dig, hvordan du bruger bash -scripts til at erstatte bestemte strenge i en fil. Opgaven med at erstatte en streng i en fil skulle blive lettere for dig efter at have praktiseret ovenstående eksempler.