Sed, abreviatura de Stream EDItor, es un comando que se utiliza para realizar transformaciones y manipulaciones de texto en un archivo. Algunas de estas transformaciones incluyen buscar y reemplazar texto. Con el comando sed de Linux, puede manipular y editar archivos de texto sin siquiera abrirlos. En este tutorial, aprenderá a manipular archivos de texto usando el comando sed.
Sintaxis del comando sed de Linux
$ sed {OPTIONS} filename
En este tutorial, usaremos linuxgeek.txt
archivo como nuestro archivo de referencia.
# cat linuxgeek.txt
Salida
1. Sustituir o reemplazar una cadena
En la mayoría de los casos, el comando sed se usa para reemplazar cadenas de texto.
El siguiente comando reemplaza 'Linux ' con 'Unix ‘.
# sed 's/Linux/Unix/' linuxgeek.txt
- Los
s
en el comando está el indicador de reemplazo. - El
/
son los delimitadores Linux
es el término de búsquedaunix
es el término de reemplazo
De forma predeterminada, el comando sed reemplaza solo la primera aparición en una línea . Las ocurrencias posteriores no serán sustituidas ni reemplazadas.
Salida
2. Sustituir o reemplazar la enésima aparición en una línea
Si desea reemplazar la ocurrencia de la segunda cadena en una línea, use el /2
bandera como se muestra.
# sed 's/Linux/Unix/2' linuxgeek.txt
Salida
3. Sustituir o reemplazar todas las apariciones del patrón en un archivo
Para reemplazar todas las apariciones del patrón de búsqueda en el archivo, use el /g
bandera. El /g
es el reemplazo global.
# sed 's/Linux/Unix/g' linuxgeek.txt
Salida
4. Sustituir o reemplazar todas las apariciones de una cadena solo en una línea específica
Si desea reemplazar todas las ocurrencias de una cadena en una línea específica, digamos en la línea 2, use la siguiente sintaxis
# sed '2 s/Linux/Unix/g' linuxgeek.txt
Salida
5. Sustituir o reemplazar una cadena en un rango específico de líneas
Si desea especificar el rango de líneas en las que se producirá el reemplazo de cadena, utilice el ejemplo que se muestra a continuación. El ejemplo indica que el reemplazo debe ocurrir desde las líneas 1 -3
# sed '1,3 s/Linux/Unix/g' linuxgeek.txt
Salida
Además, puede reemplazar el texto de una línea específica al final del archivo como se muestra
# sed '2,$ s/Linux/Unix/g' linuxgeek.txt
Lo que hace el comando es que reemplaza todas las ocurrencias desde la segunda línea hasta la última línea del archivo.
Salida
6. Coloca entre paréntesis el primer carácter de cada palabra
El siguiente ejemplo demuestra cómo puede poner paréntesis en cada primer carácter de una palabra en una línea.
$ echo "Hey Guys, Welcome To Linux Operating System" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Salida
7. Eliminar líneas de un archivo
También puede usar el comando linux sed para eliminar líneas en un archivo.
Ejemplos
Sintaxis:
$ sed 'nd' filename.txt
Para eliminar la tercera línea del archivo, ejecute
$ sed '3d' linuxgeek.txt
Salida
Para eliminar un rango de líneas, digamos de la línea 3 a la línea 5, ejecute el comando:
$ sed '3,5d' linuxgeek.txt
Salida