Com substituir una cadena en un fitxer a Bash

How Replace String File Bash



Com a programador, és possible que hàgiu de treballar amb diferents tipus de fitxers per emmagatzemar dades temporalment o permanentment. De vegades, és possible que hagueu de substituir una part del fitxer o modificar-ne el contingut. Per substituir el contingut d'un fitxer, heu de cercar la cadena de fitxer en particular. El però La comanda s'utilitza per substituir qualsevol cadena d'un fitxer mitjançant un script bash. Aquesta ordre es pot utilitzar de diverses maneres per substituir el contingut d'un fitxer en bash. El ‘Awk ’També es pot utilitzar per substituir la cadena d’un fitxer. Aquest tutorial us mostrarà com substituir qualsevol valor de cadena d’un fitxer mitjançant un script bash. Un fitxer de text anomenat Sales.txt es crea el contingut següent per mostrar les operacions de substitució.

Sales.txt







Data Àrea Import

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

Substitueix la cadena en un fitxer per l'ordre `sed`

La sintaxi bàsica del fitxer ` sed A continuació es mostra l'ordre `per substituir la cadena particular d'un fitxer.



Sintaxi



sed -i 's / search_string / replace_string /'nom de l'arxiu

Totes les parts de la sintaxi anterior s’expliquen a continuació.





'-I' l'opció s'utilitza per modificar el contingut del fitxer original amb la cadena de reemplaçament si la cadena de cerca existeix al fitxer.

'S' indica l'ordre substitut.



'Search_string' conté el valor de cadena que es cercarà al fitxer per substituir-lo.

'Reemplaça_corda' conté el valor de la cadena que s'utilitzarà per substituir el contingut del fitxer que coincideix amb el fitxer 'Search_string' valor.

'nom de l'arxiu' conté el nom de fitxer on s'aplicaran les cerques i substitucions.

Exemple 1: substituïu el fitxer per l'ordre 'sed'

En el següent script, el text de cerca i substitució es prendrà de l'usuari. Si la cadena de cerca existeix a 'Sales.txt', se substituirà per la cadena de substitució. Aquí es realitzarà una cerca sensible a majúscules i minúscules.

#! / bin / bash

# Assigneu el nom del fitxer
nom de l'arxiu='Sales.txt'

# Agafeu la cadena de cerca
llegir -p 'Introduïu la cadena de cerca:'cerca

# Agafeu la cadena de substitució
llegir -p 'Introduïu la cadena de substitució:'substituir

si [[ $ cerca !='' && $ reemplaça !='' ]];llavors
sed -i 's /$ cerca/$ reemplaça/ ' $ nom de fitxer
ser

Sortida

Exemple 2: substituïu el fitxer per l'ordre 'sed' per les marques 'g' i 'i'

El següent script funcionarà com l’exemple anterior, però la cadena de cerca es buscarà globalment per al senyalador ‘g’ i la cerca que no distingeix entre majúscules i minúscules es farà per al senyal ‘i’.

#! / bin / bash

# Agafeu la cadena de cerca
llegir -p 'Introduïu la cadena de cerca:'cerca

# Agafeu la cadena de substitució
llegir -p 'Introduïu la cadena de substitució:'substituir

si [[ $ cerca !='' && $ reemplaça !='' ]];llavors
sed -i 's /$ cerca/$ reemplaça/ donar ' $ 1
ser

Sortida

Exemple 3: substituïu el fitxer per ordre 'sed' i patró de dígits coincidents

El següent script cercarà tot el contingut numèric en un fitxer i substituirà el contingut afegint el fitxer '$' símbol al començament dels números.

#! / bin / bash

# Comproveu que el valor de l'argument de línia d'ordres existeix o no
si [ $ 1 !='' ];llavors
# Cerqueu totes les cadenes que contenen dígits i afegiu $
sed -i 's / b [0-9] {5 } b / $ & / g' $ 1
ser

Sortida

Substitueix la cadena en un fitxer per l'ordre 'awk'

El ‘ awk ’ és una altra manera de substituir la cadena d’un fitxer, però aquesta ordre no pot actualitzar el fitxer original directament com però comandament.

Exemple 4: substituïu el fitxer per l'ordre 'awk'

El següent script emmagatzemarà el contingut actualitzat a temp.txt fitxer que canviarà el nom pel fitxer original.

#! / bin / bash

# Comproveu que el valor de l'argument de línia d'ordres existeix o no
si [ $ 1 !='' ];llavors
# Cerqueu totes les cadenes segons la data
awk '{sub ('02 / 06/2020', '12/06/2020')} 1 ' $ 1 >temp.txt&& mvtemp.txt$ 1
ser

Sortida

Conclusió

Aquest article us mostra com utilitzar scripts bash per substituir cadenes concretes d'un fitxer. La tasca de substituir una cadena en un fitxer us hauria de ser més fàcil després de practicar els exemples anteriors.