GNU/Linux >> Tutoriales Linux >  >> Linux

Comando sed de Linux:cómo usar el editor de secuencias

Introducción

SED es un editor de secuencias de texto que se utiliza en los sistemas Unix para editar archivos de forma rápida y eficaz. La herramienta busca, reemplaza, agrega y elimina líneas en un archivo de texto sin abrir el archivo en un editor de texto.

Aprende a usar el sed comando y sus opciones a través de ejemplos fáciles de seguir.

Sintaxis sed de Linux

La sintaxis principal para usar Linux sed el comando es:

sed OPTIONS... [SCRIPT] [INPUTFILE...]

Opciones sed Linux

Puede ejecutar sed con las siguientes opciones de línea de comandos:

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

Linux
  1. Cómo usar el comando sed de Linux

  2. Cómo usar el comando grep de Linux

  3. Cómo usar el comando de historial en Linux

  4. Cómo usar el comando id en Linux

  5. Cómo usar el comando "pantalla" en Linux

Cómo usar Nano, el editor de texto de línea de comandos de Linux

Cómo usar el comando fd en el sistema Linux

¿Cómo usar el comando wget en Linux?

¿Cómo usar el comando xargs en Linux?

Cómo usar el comando RPM en Linux

Cómo usar el comando which en Linux

    -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.