El comando sed o stream editor es un programa que puede usar para modificar archivos de texto de acuerdo con varios parámetros. El comando sed también se puede usar para acciones globales de búsqueda y reemplazo. Algunas de las opciones de comando comunes y sus usos se dan en la siguiente tabla.
Opción | Descripción |
---|---|
-d | Elimine las líneas que coincidan con un patrón o número de línea específico. |
-n,p | Imprime solo las líneas que contienen el patrón. |
s | Sustituya la primera aparición de la cadena en el archivo. |
S,g | Sustituya globalmente la cadena original con la cadena de reemplazo para cada aparición en el archivo. |
Sintaxis
La sintaxis general del comando sed es:
# sed {'option/address/ action'} {file names}
Las direcciones le dicen a sed que actúe solo en ciertas líneas o que actúe solo en el texto que coincida con un patrón de expresión regular determinado. Son opcionales. Las direcciones van seguidas de la acción que se realizará cuando se encuentre una coincidencia. El último argumento es el nombre del archivo de entrada. Los parámetros de opción, dirección y acción suelen estar entre comillas simples.
Si encuentra el siguiente error mientras ejecuta el comando sed:
sed: command not found
puede intentar instalar el siguiente paquete según su elección de distribución:
Distribución del sistema operativo | Comando |
---|---|
Debian | apt-get install sed |
Ubuntu | apt-get install sed |
Alpino | apk agregar sed |
Arco Linux | pacman-S sed |
Kali Linux | apt-get install sed |
Cent OS | yum instalar sed |
Fedora | dnf instalar sed |
Raspbian | apt-get install sed |
Ejemplos de comandos sed
1. Reemplace la primera aparición de una expresión regular en cada línea de un archivo e imprima el resultado:
# sed 's/regular_expression/replace/' filename
2. Reemplace todas las apariciones de una expresión regular extendida en un archivo e imprima el resultado:
# sed -r 's/regular_expression/replace/g' filename
3. Reemplace todas las apariciones de una cadena en un archivo, sobrescribiendo el archivo (es decir, en el lugar):
# sed -i 's/find/replace/g' filename
4. Reemplace solo en líneas que coincidan con el patrón de línea:
# sed '/line_pattern/s/find/replace/' filename
5. Eliminar líneas que coincidan con el patrón de línea:
# sed '/line_pattern/d' filename
6. Imprime las primeras 11 líneas de un archivo:
# sed 11q filename
7. Aplique varias expresiones de buscar y reemplazar a un archivo:
# sed -e 's/find/replace/' -e 's/find/replace/' filename
8. Reemplace el separador `/` por cualquier otro carácter que no se use en los patrones de búsqueda o reemplazo, p. `#`:
# sed 's#find#replace#' filename