-b , --binary | Abrir archivos de entrada en modo binario para considerar que las líneas terminan en un salto de línea. |
--debug | Cambie al modo de depuración para imprimir la entrada en forma canónica y anotar la ejecución del programa. |
--follow-symlinks | Edite el destino final si el archivo especificado es un enlace simbólico. Solo funciona cuando se combina con -i opción. |
--help | Muestra la información de uso. |
--i , --in-place [=SUFFIX] | Realice ediciones en el lugar sobrescribiendo el archivo original. |
--posix | Deshabilitar todas las extensiones para POSIX sed para simplificar la escritura de scripts portátiles. |
--version | Mostrar la versión de sed ejecutándose en el sistema. |
-E , -r , --regexp-extended | Utilice expresiones regulares extendidas. |
-e <em>script</em> , --expression=<em>script</em> | Agregue un script específico para ejecutar con los comandos. |
-f <em>script-file</em> | Agregue el contenido de un archivo de script específico para ejecutar con los comandos. |
-l <em>N</em> , --line-length=<em>N</em> | Defina la longitud de ajuste de línea deseada para el l comando (el valor predeterminado es 70). |
-n , --quiet , --silent | Deshabilitar impresión de salida. |
-s , --separate | Ver archivos especificados por separado, no como un único flujo largo continuo. |
--sandbox | Desactive la ejecución de programas externos y opere solo en archivos de entrada en la línea de comando. |
-u , --unbuffered | Minimizar el búfer de entrada y salida. |
-z , --null-data , --zero-terminated | Vea la entrada como un conjunto de líneas donde cada una termina con un byte cero. |
Ejemplos de sed de Linux
A continuación, mostramos diez sed
de uso común comandos, ejemplos y sintaxis.
Para este tutorial, creamos un archivo de muestra con el nombre foxinbox.tx t con el siguiente contenido:
Knox in box.
Fox in socks.
Knox on fox in socks in box.
Socks on Knox and Knox in box.
Fox in socks on box on Knox.
Tenga en cuenta que sed
no afecta el archivo fuente a menos que se le indique. En su lugar, el comando muestra los cambios realizados por el comando dado en su salida.
Para sobrescribir el archivo original, use -i
opción para guardar las modificaciones. Sin embargo, no se recomienda tal práctica antes de probar la salida del comando.
Alternativamente, guarde las ediciones en un archivo diferente (o nuevo). Redirija la salida agregando > newfilename.txt
al final del comando.
Reemplazar cadena usando el comando sed
El sed
de Linux El comando se usa más comúnmente para sustituir texto. Busca el patrón especificado en un archivo y lo reemplaza con la cadena deseada.
Para reemplazar texto usando sed
, use el comando sustituto s
y delimitadores (en la mayoría de los casos, barras inclinadas - /
) para separar campos de texto.
Por lo tanto, la sintaxis para reemplazar texto es:
sed 's/old_string/new_string/' filename.txt
Reemplazar old_string
con el texto que desea sustituir y new_string
con el texto por el que quieras cambiarlo.
Por ejemplo, para reemplazar instancias de box
con la palabra bin
, ejecuta:
sed 's/box/bin/' foxinbox.txt
La salida muestra el texto con las palabras reemplazadas, como en la imagen a continuación.
Reemplace todas las apariciones de cadenas usando el comando sed
De forma predeterminada, sed
solo reemplaza la primera aparición de la cadena especificada en cada línea. Busca la primera instancia de la palabra especificada en una línea, la reemplaza y pasa a la siguiente línea.
Con múltiples instancias de la palabra box
en la misma línea, el comando sólo sustituye al primero.
Si tiene varias instancias de la misma palabra dentro de una sola línea, agregue la g
marca al comando para cambiarlos todos.
El comando para sustituir cada ocurrencia de una cadena dada dentro de un texto es:
sed 's/old_string/new_string/g' filename.txt
Para reemplazar la palabra box
con la palabra bin
en el archivo foxinbox.txt cada vez, escriba:
sed 's/box/bin/g' foxinbox.txt
El resultado anterior muestra que el comando reemplazó todas las instancias de la palabra box
.
Reemplazar ocurrencias específicas en una línea usando el comando sed
El sed
El comando le permite elegir qué ocurrencia de una cadena específica desea reemplazar dentro de cada línea. Para hacerlo, agregue un indicador de número como 1
, 2
, etc.:
sed 's/old_string/new_string/#' filename.txt
Por ejemplo, para sustituir la segunda aparición de la palabra box
en cada línea del texto con la palabra bin
, usa este comando:
sed 's/box/bin/2' foxinbox.txt
El comando omitió tres instancias de la palabra porque estaban al principio de la línea y reemplazó solo la del final.
Imprimir solo líneas con texto de sustitución
De forma predeterminada, el sed
El comando imprime todo el contenido del archivo, junto con el texto sustituto en su salida. Si tiene mucho texto y desea concentrarse en las líneas con los cambios aplicados, agregue los atributos necesarios al comando.
Para imprimir solo las líneas que tienen sustitución bajo las condiciones dadas, use la sintaxis:
sed -n 's/old_string/new_string/p' filename.txt
El -n
opción desactiva la impresión automática, mientras que el comando sustituto p
instruye a sed
para imprimir líneas donde ocurre la sustitución.
Puedes agregar la p
comando a otros comandos sustitutos, como en el siguiente ejemplo:
sed -n 's/box/bin/2p' foxinbox.txt
El comando reemplaza la segunda instancia de la palabra box
en una línea e imprime la línea donde se produjo el cambio. En la imagen a continuación, solo ve una línea con la sustitución aplicada.
Reemplazar cadena usando el comando sed e ignorar mayúsculas y minúsculas
De forma predeterminada, el sed
El comando distingue entre mayúsculas y minúsculas. Por ejemplo, el siguiente contenido contiene la palabra fox
con primeras letras mayúsculas y minúsculas:
Knox in box.
Fox in socks.
Knox on fox in socks in box.
Socks on Knox and Knox in box.
Fox in socks on box on Knox.
Para sustituir todas las instancias de la palabra zorro , no ejecute el comando habitual:
sed 's/fox/cow/' foxinbox.txt
El resultado del comando solo cambia la ocurrencia de la palabra fox
donde está completamente en minúsculas:
Para ignorar mayúsculas y minúsculas al sustituir texto, agregue i
subcomando al final del comando:
sed 's/old_string/new_string/i' filename.txt
Por lo tanto, el comando para cambiar las mayúsculas y minúsculas de la palabra fox en el texto de arriba es:
sed 's/fox/cow/i' foxinbox.txt
El resultado muestra que el comando cambió las tres instancias de la cadena especificada.
Reemplazar cadena en una línea específica usando el comando sed
El sed
El comando le permite sustituir una cadena en una línea específica agregando el número de línea como prefijo a los s
subcomando:
sed '# s/old_string/new_string/' filename.txt
Para probar esta característica en la muestra foxinbox.txt archivo, reemplace la palabra socks
con sandals
solo en la cuarta línea (4
) del texto usando el comando:
sed '4 s/socks/sandals/' foxinbox.txt
El resultado muestra que la primera instancia de la palabra socks
en la segunda línea permanece igual, mientras que la misma palabra ha sido reemplazada por sandals
en la cuarta línea.
Reemplazar cadena solo en un rango específico de líneas usando el comando sed
Para reemplazar varias instancias de una cadena dentro de un rango de líneas, pero no el texto completo, especifique el rango donde desea sed
sustituir. La sintaxis es:
sed '#,# s/old_string/new_string/' filename.txt
Reemplace el primer #
con el número de línea inicial y el segundo #
con el último número de línea que desea incluir.
Por ejemplo, para reemplazar las dos últimas instancias de la palabra socks en el archivo foxinbox.txt (ubicado en la cuarta y sexta línea) con la palabra sandals
, ejecutarías:
sed '4,6 s/socks/sandals/' foxinbox.txt
Eliminar línea específica usando el comando sed
Para eliminar una línea de un archivo con sed
comando, use el d
subcomando y la sintaxis:
sed '#d' filename.txt
Especifique el número de línea que desea eliminar en lugar del hash (#
) y ejecute el comando.
Por ejemplo, para eliminar la segunda línea del foxinbox.txt archivo, escriba:
sed '2d' foxinbox.txt
Eliminar líneas dentro de un rango específico de líneas usando el comando sed
Para eliminar varias líneas dentro de un rango de líneas usando el sed
comando, siga la sintaxis:
sed '#,#d' filename.txt
Reemplace los símbolos hash con el comienzo y el final del rango de línea. Por ejemplo:
sed '2,4d' foxinbox.txt
El comando anterior elimina las líneas 2, 3 y 4 del archivo.
Eliminar desde lo específico hasta la última línea usando el comando sed
Para eliminar líneas desde un número de línea específico hasta la última línea, use el comando:
sed '#,$d' filename.txt
Es decir, eliminar todo desde la línea 3 hasta el final de foxinbox.txt , ejecuta este comando:
sed '3,$d' foxinbox.txt