logo

Comando Sed en Linux/Unix con ejemplos

El comando SED en UNIX significa editor de secuencias y puede realizar muchas funciones en archivos como buscar, buscar y reemplazar, insertar o eliminar. Aunque el uso más común del comando SED en UNIX es para sustitución o para buscar y reemplazar. Al usar SED, puede editar archivos incluso sin abrirlos, lo cual es una forma mucho más rápida de buscar y reemplazar algo en un archivo que abrir primero ese archivo en VI Editor y luego cambiarlo.

  • SED es un potente editor de flujo de texto. Puede realizar inserción, eliminación, búsqueda y reemplazo (sustitución).
  • El comando SED en Unix admite expresiones regulares que le permiten realizar coincidencias de patrones complejos.

Sintaxis:



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

Ejemplo:
Considere el siguiente archivo de texto como entrada.

reemplazar de cadena en java
 $cat>archivogeek.txt>
 unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

Comandos de muestra

    Reemplazar o sustituir una cadena: el comando Sed se usa principalmente para reemplazar el texto en un archivo. El siguiente comando sed simple reemplaza la palabra unix con linux en el archivo.
     $sed 's/unix/linux/' geekfile.txt>

    Producción :



     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Aquí la s especifica la operación de sustitución. Los / son delimitadores. Unix es el patrón de búsqueda y Linux es la cadena de reemplazo.

    De forma predeterminada, el comando sed reemplaza la primera aparición del patrón en cada línea y no reemplazará la segunda, tercera… aparición en la línea. Reemplazar la enésima aparición de un patrón en una línea: utilice los indicadores /1, /2, etc. para reemplazar la primera y segunda aparición de un patrón en una línea. El siguiente comando reemplaza la segunda aparición de la palabra unix con linux en una línea.

     $sed 's/unix/linux/2' geekfile.txt>

    Producción:



     unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>
    Reemplazar todas las apariciones del patrón en una línea: el indicador de sustitución /g (reemplazo global) especifica el comando sed para reemplazar todas las apariciones de la cadena en la línea.
     $sed 's/unix/linux/g' geekfile.txt>

    Producción :

    unix vs ventanas
     linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>
    Reemplazo de la enésima aparición a todas las apariciones en una línea: utilice la combinación de /1, /2, etc. y /g para reemplazar todos los patrones de la enésima aparición de un patrón en una línea. El siguiente comando sed reemplaza la tercera, cuarta, quinta… palabra de Unix con la palabra de Linux en una línea.
     $sed 's/unix/linux/3g' geekfile.txt>

    Producción:

     unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>
    Poner entre paréntesis el primer carácter de cada palabra: este ejemplo de sed imprime el primer carácter de cada palabra entre paréntesis.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

    Producción:

     (W)elcome (T)o (T)he (G)eek (S)tuff>
    Reemplazo de cadena en un número de línea específico: puede restringir el comando sed para reemplazar la cadena en un número de línea específico. Un ejemplo es
     $sed '3 s/unix/linux/' geekfile.txt>

    Producción:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    El comando sed anterior reemplaza la cadena solo en la tercera línea. Duplicar la línea reemplazada con el indicador /p: el indicador de impresión /p imprime la línea reemplazada dos veces en el terminal. Si una línea no tiene el patrón de búsqueda y no se reemplaza, entonces /p imprime esa línea solo una vez.

     $sed 's/unix/linux/p' geekfile.txt>

    Producción:

    Ups conceptos
     linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
    Imprimir solo las líneas reemplazadas: use la opción -n junto con el indicador de impresión /p para mostrar solo las líneas reemplazadas. Aquí la opción -n suprime las filas duplicadas generadas por el indicador /p e imprime las líneas reemplazadas solo una vez.
     $sed -n 's/unix/linux/p' geekfile.txt>

    Producción:

     linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Si usa -n solo sin /p, entonces sed no imprime nada. Reemplazo de cadena en un rango de líneas: puede especificar un rango de números de línea en el comando sed para reemplazar una cadena.

     $sed '1,3 s/unix/linux/' geekfile.txt>

    Producción:

     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Aquí el comando sed reemplaza las líneas con un rango de 1 a 3. Otro ejemplo es

     $sed '2,$ s/unix/linux/' geekfile.txt>

    Producción:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>

    Aquí $ indica la última línea del archivo. Entonces, el comando sed reemplaza el texto desde la segunda línea hasta la última línea del archivo. Eliminar líneas de un archivo en particular: el comando SED también se puede utilizar para eliminar líneas de un archivo en particular. El comando SED se utiliza para realizar la operación de eliminación sin siquiera abrir el archivo
    Ejemplos:
    1. Para eliminar una línea en particular, diga n en este ejemplo.

     Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

    2. Para eliminar una última línea

     Syntax: $ sed '$d' filename.txt>

    3. Para eliminar una línea del rango xay

     Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

    4. Para eliminar desde la enésima hasta la última línea

     Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

    5. Para eliminar la línea de coincidencia de patrones

    marca de agua en word
     Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


Comando SED en Linux | Conjunto 2