in

Sed Command en Linux / Unix con ejemplos

gfg 200x200 min

El comando SED en UNIX es sinónimo de editor de flujo y puede realizar muchas funciones en archivos como buscar, encontrar 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 abrirlo, que es una forma mucho más rápida de encontrar y reemplazar algo en el archivo, que primero abrir ese archivo en VI Editor y luego cambiarlo.

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

Sintaxis:

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

Ejemplo:
Considere el siguiente archivo de texto como entrada.


$cat > geekfile.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

  1. Reemplazo o sustitución de 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. El «unix» es el patrón de búsqueda y el «linux» es la cadena de reemplazo.

    Por defecto, el comando sed reemplaza la primera ocurrencia del patrón en cada línea y no reemplazará la segunda, tercera… ocurrencia en la línea.

  2. Reemplazo de la enésima aparición de un patrón en una línea: Utilice los indicadores / 1, / 2, etc. para reemplazar la primera, 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.
    
  3. Reemplazo de todas las ocurrencias del patrón en una línea: El indicador sustituto / g (reemplazo global) especifica el comando sed para reemplazar todas las ocurrencias de la cadena en la línea.
    
    $sed 's/unix/linux/g' geekfile.txt
    

    Producción :

    
    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.
    
  4. Reemplazo de la enésima ocurrencia a todas las ocurrencias 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 «unix» con la palabra «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.
    
  5. Ponga 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/(b[A-Z])/(1)/g'
    

    Producción:

    
    (W)elcome (T)o (T)he (G)eek (S)tuff
    
  6. 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.

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

    
    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.
    
  8. Imprimir solo las líneas reemplazadas: Utilice 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 el sed no imprime nada.

  9. Reemplazo de cadena en un rango de líneas: Puede especificar un rango de números de línea para 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 en el archivo.

  10. 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 usa 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 la línea del rango xay

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

    5. Para eliminar de la enésima línea a la última

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

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

    
    Syntax:
    $ sed '/pattern/d' filename.txt
    Example:
    $ sed '/abc/d' filename.txt
    


Comando SED en Linux | Conjunto 2

Este artículo es una contribución de Akshay Rajput y Mohak Agrawal. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando contrib.geeksforgeeks.org o envíe su artículo por correo electrónico a contrib@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

Python: buscar en la lista

86d478

Bruto vs neto: diferencia y comparación