01. Sintaxis general para SED
02. Reemplace la cadena en el archivo con script bash sed
03. comandos de sed g e I para global e insensible
04. SED DIGIT COMPAÑINACIÓN
05. Sintaxis general para AWK
06. Reemplace la cadena en el archivo con el script Bash AWK
07. Reemplace la cadena en el archivo con scripting de bash puro
08. Reemplace la cadena en el archivo con Perl One Liner
Datos de muestra para reemplazo de cadenas de bash
Un archivo de texto llamado Ventas.TXT con el siguiente contenido se crea para mostrar las operaciones de reemplazo.
Ventas.TXT
Sintaxis general para SED: Reemplace la cadena en un archivo
La sintaxis básica del 'sed'El comando para reemplazar la cadena particular en un archivo se da a continuación a continuación.
Sintaxis
Sed -i 's/search_string/reemplazar_string/' nombre de archivo
Cada parte de la sintaxis anterior se explica a continuación.
'-i' La opción se usa para modificar el contenido del archivo original con la cadena de reemplazo si la cadena de búsqueda existe en el archivo.
's' indica el comando sustituto.
'cadena de búsqueda' contiene el valor de cadena que se buscará en el archivo para reemplazar.
'reemplazar_string' contiene el valor de cadena que se usará para reemplazar el contenido del archivo que coincide con el 'cadena de búsqueda' valor.
'Nombre del archivo' contiene el nombre de archivo donde se aplicará la búsqueda y el reemplazo.
Ejemplo 1: Reemplace el archivo con el comando 'sed'
En el siguiente script, el texto de búsqueda y reemplazo se tomará del usuario. Si la cadena de búsqueda existe en 'ventas.txt ', luego será reemplazado por la cadena de reemplazo. Aquí, se realizará una búsqueda sensible al caso.
#!/bin/bash
# Asignar el nombre de archivo
FileName = "Ventas.TXT"
# Toma la cadena de búsqueda
leer -p "Ingrese la cadena de búsqueda:" Buscar
# Tome la cadena de reemplazo
leer -p "Ingrese la cadena de reemplazo:" Reemplazar
Si [[$ Search != "" && $ reemplazar != ""]]; entonces
sed -i "s/$ search/$ reemplazar/" $ nombre de archivo
FI
Producción:
Ejemplo 2: Reemplace el archivo con el comando 'sed' con el indicador 'g' y 'i'
El siguiente script funcionará como el ejemplo anterior, pero la cadena de búsqueda se buscará a nivel mundial el indicador 'G', y la búsqueda insensible a la caja se realizará para el indicador 'I'.
#!/bin/bash
# Toma la cadena de búsqueda
leer -p "Ingrese la cadena de búsqueda:" Buscar
# Tome la cadena de reemplazo
leer -p "Ingrese la cadena de reemplazo:" Reemplazar
Si [[$ Search != "" && $ reemplazar != ""]]; entonces
SED -I "S/$ Search/$ Reemplazar/GI" $ 1
FI
Producción:
Ejemplo 3: Reemplace el archivo con el comando 'sed' y el patrón de dígitos coincidentes
El siguiente script buscará todo el contenido numérico en un archivo y reemplazará el contenido agregando el ps símbolo al comienzo de los números.
#!/bin/bash
# Verifique el valor del argumento de la línea de comando existe o no
Si [$ 1 != ""]; entonces
# Buscar todas las cadenas que contienen dígitos y agregar $
Sed -i 's/\ b [0-9] \ 5 \ \ b/$ &/g' $ 1
FI
Producción:
Reemplace la cadena en un archivo con el comando 'AWK'
El 'awk ' El comando es otra forma de reemplazar la cadena en un archivo, pero este comando no puede actualizar el archivo original directamente como el 'sed ' dominio.
Ejemplo 4: Reemplace el archivo con el comando 'AWK'
El siguiente script almacenará el contenido actualizado en el temperatura.TXT archivo que será renombrado por el archivo original.
#!/bin/bash
# Verifique el valor del argumento de la línea de comando existe o no
Si [$ 1 != ""]; entonces
# Buscar todas las cadenas basadas en la fecha
AWK 'sub ("06/06/2020", "12/06/2020") imprimir' $ 1> temperatura.txt && mv temp.txt $ 1
FI
Producción:
En el ejemplo anterior, el comando 'AWK' se usa para buscar una cadena "06/06/2020", ¿Cuál es la última fecha en nuestro archivo de muestra?. La cadena emparejada será reemplazada por una nueva cadena "06/12/2020". La cadena resultante, ya sea sustituida o no, se imprime en cada línea.
Ejemplo 5: Reemplace la cadena en el archivo con scripting de bash puro
En este ejemplo haremos el mismo trabajo con una fiesta mientras que el bucle y un comando de reemplazo de cadena de bash. Escribiremos la salida a un TMP archivo y reemplace el original al final del script. Vea el código a continuación:
#!/bin/bash
Mientras lea la línea; hacer
# Reemplazar todas las instancias en línea de Khulna con Dhaka
echo $ línea // khulna/dhaka
hecho < Sales.txt > /tmp/ventas.O.TXT
MV /TMP /Ventas.O.ventas txt.TXT
Puede ver que el comando echo hará un reemplazo en la variable de línea, ya que el script lee cada línea en el archivo de texto y reemplazará todas las instancias de Khulna con la nueva cadena Dhaka. El bucle while se lee desde el archivo de entrada Ventas.TXT y escribe en el archivo de salida /tmp/ventas.O.TXT. Finalmente, el archivo de salida temporal reemplaza el archivo original con el MV dominio.
Producción:
Ejemplo 6: Reemplace la cadena en el archivo con Perl One Liner
Esta tarea es realmente súper simple con Perl. Perl es un lenguaje antiguo y menos popular pero extremadamente poderoso. Esto se puede hacer con un comando de línea en la línea de comando bash:
perl -pi.ventas de bak -e 's/dhaka/bogra/g'.TXT-Pi.bak le dice a Perl que procese el archivo en su lugar y también cree un archivo de copia de seguridad con el .extensión de BAK. El reemplazo será todos los casos de Dhaka para Bogra Como el nuevo texto. Aquí puede ver la salida fácil de este comando:
PRODUCCIÓN:
Conclusión
Este artículo le mostró cómo usar scripts bash para reemplazar las cadenas en un archivo con búsqueda y reemplazar en la línea de comando en bash. Hay muchas maneras de hacer esto, incluso con comandos Sed, Awk, Perl; Puede usar secuencias de comandos bash nativas con bucles y regex y hay más formas de discutir aquí. Bash y Linux tienen muchas formas de hacer el mismo trabajo.