Jak nahradit řetězec v souboru v Bash

How Replace String File Bash



Jako programátor možná budete muset pracovat s různými typy souborů pro dočasné nebo trvalé ukládání dat. Někdy může být nutné vyměnit část souboru nebo upravit konkrétní obsah souboru. Chcete -li nahradit obsah v souboru, musíte vyhledat konkrétní řetězec souboru. The ale příkaz se používá k nahrazení libovolného řetězce v souboru pomocí skriptu bash. Tento příkaz lze použít různými způsoby k nahrazení obsahu souboru v bash. The „Awk Příkaz ‘lze také použít k nahrazení řetězce v souboru. Tento tutoriál vám ukáže, jak nahradit libovolnou hodnotu řetězce ze souboru pomocí skriptu bash. Textový soubor s názvem Sales.txt s následujícím obsahem je vytvořen pro ukázku náhradních operací.

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.