GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Introducción

Sed significa S tren ED itor Es un comando de Linux que se utiliza para buscar, encontrar y reemplazar, o insertar y eliminar palabras y líneas en un archivo de texto.

El caso de uso más común del comando Sed es buscar y reemplazar cadenas en archivos. Al usar el comando Sed, puede editar archivos sin abrirlos.

Este artículo explicará los detalles del uso del comando Sed para buscar y reemplazar cadenas en archivos.

Todos los ejemplos de este tutorial se ejecutaron en Ubuntu 20.04.

Buscar y reemplazar

De forma predeterminada, Sed está instalado en la mayoría de las distribuciones de Linux. Puede verificar la instalación de Sed en su sistema Linux ejecutando:

$ sed --v

La salida será algo como esto:

La sintaxis básica del uso del comando Sed para buscar y reemplazar texto es:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

en el que:

-i:esta opción hace que el comando Sed edite los archivos en lugar de escribir la salida en la salida estándar.

s:Significa sustituto.

//:Caracteres delimitadores.

g:Es una bandera de reemplazo global.

ARCHIVO:El archivo que desea manipular con el comando Sed.

Se recomienda poner el patrón de búsqueda, el patrón de reemplazo y otros argumentos entre comillas.

Por ejemplo, aquí hay un archivo de texto que se usó para la demostración:

567 Test test test
test /bin/zsh linuxways.net testbar 789

Para reemplazar todas las palabras de 'prueba' con palabras de 'linux', ejecute el siguiente comando:

$ sed -i 's/test/linux/g' test.txt

Salida:

Si no usa el indicador g, solo se reemplaza la primera aparición del patrón de búsqueda en cada línea:

$ sed -i 's/test/linux/' test.txt

Salida:

Como puede ver, en el ejemplo anterior, también se coloca la prueba de subcadena dentro de la cadena testbar. Si no desea reemplazar una subcadena en el patrón de búsqueda, coloquemos el patrón de búsqueda entre dos límites de palabras \b:

$ sed -i 's/\btest\b/linux/g' test.txt

Salida:

Para hacer que el patrón de búsqueda coincida con mayúsculas y minúsculas, usemos el indicador I:

$ sed -i 's/test/linux/gI' test.txt

Salida:

En el mundo de Linux, encontraremos muchos casos de uso que tienen caracteres delimitadores en archivos de texto. Tenemos que usar la barra invertida \ para dividir los caracteres delimitadores. Por ejemplo, para reemplazar /bin/zsh con /usr/bin/bash, ejecute:

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt

Salida:

Buscar y reemplazar recursivamente

En muchos casos, desea buscar directorios recursivamente para archivos que tengan una cadena específica y reemplazar esa cadena en todos los archivos.

Por ejemplo, el siguiente comando buscará y reemplazará la cadena 'way' con 'road' en todos los archivos del directorio actual.

$ find . -type f -exec sed -i 's/way/road/g' {} +

Si los nombres de archivo contienen caracteres de espacio, usemos la opción -print0:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Para buscar y reemplazar una cadena solo en archivos que tienen una extensión específica, ejecute:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

Conclusión

Ha repasado algunos ejemplos comunes del uso del comando Sed. Buscar y reemplazar una cadena de texto en un archivo con el comando Sed no es tan complicado como imaginas.

Si tiene alguna inquietud, hágamelo saber en la sección de comentarios.


Ubuntu
  1. Búsqueda de archivos en la línea de comandos (instrucciones)

  2. Use el comando SED para buscar y reemplazar cadenas en archivos:¿cómo realizar esta tarea en Ubuntu?

  3. ¿Cómo reemplazar una cadena en un archivo (s)?

  4. ¿Cómo usar Sed para reemplazar una cadena de varias líneas?

  5. Cómo usar el comando find de Linux para buscar archivos

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Cómo cambiar el nombre de archivos y directorios en Ubuntu 20.04

Cómo instalar y usar Busybox en Ubuntu

Cómo encontrar archivos en la línea de comandos de Ubuntu

Cómo encontrar y reemplazar texto en Vim

Cómo usar Sed para buscar y reemplazar una cadena en un archivo