Sales.txt
Oblast Množství data
1. 1. 2020 60 000 Dháky
10.2.2020 76000 Rádžshahi
21.03.2020 54 000 Khulna
15. 4. 2020 78 000 Chandpur
17. 5. 2020 45 000 Bogra
2.6.2020 67000 Comilla
Nahraďte řetězec v souboru příkazem `sed`
Základní syntaxe souboru ` sed `Příkaz pro nahrazení konkrétního řetězce v souboru je uveden níže.
Syntax
sed -i 's/řetězec_hledání/řetězec_ nahrazení/'název souboru
Každá část výše uvedené syntaxe je vysvětlena níže.
'-I' možnost se používá k úpravě obsahu původního souboru pomocí náhradního řetězce, pokud v souboru hledaný řetězec existuje.
'S' označuje náhradní příkaz.
„Řetězec_hledání“ obsahuje hodnotu řetězce, která bude v souboru vyhledána k nahrazení.
'Replace_string' obsahuje hodnotu řetězce, která bude použita k nahrazení obsahu souboru, který odpovídá „Řetězec_hledání“ hodnota.
'název souboru' obsahuje název souboru, kde bude použito hledání a nahrazení.
Příklad 1: Nahraďte soubor příkazem „sed“
V následujícím skriptu bude text hledání a nahrazení převzat od uživatele. Pokud vyhledávací řetězec existuje v souboru „Sales.txt“, bude nahrazen náhradním řetězcem. Zde bude provedeno vyhledávání rozlišující malá a velká písmena.
#!/bin/bash# Přiřaďte název souboru
název souboru='Sales.txt'
# Vezměte vyhledávací řetězec
číst -p 'Zadejte hledaný řetězec:'Vyhledávání
# Vezměte náhradní řetězec
číst -p 'Zadejte řetězec pro nahrazení:'nahradit
-li [[ $ hledat !='' && $ nahradit !='' ]];pak
sed -i 's/$ hledat/$ nahradit/ ' $ název_souboru
být
Výstup
Příklad 2: Nahraďte soubor příkazem „sed“ příznakem „g“ a „i“
Následující skript bude fungovat jako v předchozím příkladu, ale vyhledávací řetězec bude globálně prohledáván pro příznak „g“ a pro příznak „i“ bude provedeno vyhledávání bez rozlišení velkých a malých písmen.
#!/bin/bash# Vezměte vyhledávací řetězec
číst -p 'Zadejte hledaný řetězec:'Vyhledávání
# Vezměte náhradní řetězec
číst -p 'Zadejte řetězec pro nahrazení:'nahradit
-li [[ $ hledat !='' && $ nahradit !='' ]];pak
sed -i 's/$ hledat/$ nahradit/dát' 1 $
být
Výstup
Příklad 3: Nahraďte soubor příkazem „sed“ a vzorem odpovídajících číslic
Následující skript vyhledá veškerý numerický obsah v souboru a nahradí obsah přidáním '$' symbol na začátku čísel.
#!/bin/bash# Zkontrolujte, zda hodnota argumentu příkazového řádku existuje nebo ne
-li [ 1 $ !='' ];pak
# Vyhledejte všechny řetězce obsahující číslice a přidejte $
sed -i 's/ b [0-9] {5 } b/$ &/g' 1 $
být
Výstup
Nahraďte řetězec v souboru příkazem `awk`
‚‘ awk ‘ příkaz je další způsob, jak nahradit řetězec v souboru, ale tento příkaz nemůže aktualizovat původní soubor přímo jako „ ale příkaz.
Příklad 4: Nahraďte soubor příkazem „awk“
Následující skript uloží aktualizovaný obsah do souboru temp.txt soubor, který bude přejmenován na původní soubor.
#!/bin/bash# Zkontrolujte, zda hodnota argumentu příkazového řádku existuje nebo ne
-li [ 1 $ !='' ];pak
# Hledejte všechny řetězce podle data
awk '{sub ('02/06/2020', '12/06/2020')} 1 ' 1 $ >temp.txt&& mvtemp.txt1 $
být
Výstup
Závěr
Tento článek vám ukázal, jak pomocí skriptů bash nahradit konkrétní řetězce v souboru. Úloha nahradit řetězec v souboru by se vám měla po procvičení výše uvedených příkladů usnadnit.