Comando Sed en Linux/Unix con ejemplos – Part 1

El comando SED en UNIX significa editor de flujo y puede realizar muchas funciones en el archivo, 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 abrirlos, 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 secuencias de texto. Puede hacer inserción, eliminación, búsqueda y reemplazo (sustitución).
  • El comando SED en Unix admite la expresión regular, lo que le permite realizar coincidencias de patrones complejos.

Sintaxis:

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

Ejemplo:
considere el siguiente archivo de texto como una 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. Reemplazar o sustituir una string: 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 string de reemplazo.

    De forma predeterminada, 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 ocurrencia de un patrón en una línea: Use las banderas /1, /2, etc. para reemplazar la primera, segunda ocurrencia 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 de sustitución /g (reemplazo global) especifica el comando sed para reemplazar todas las ocurrencias de la string 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. Reemplazar desde la enésima aparición a todas las apariciones en una línea: use la combinación de /1, /2, etc. y /g para reemplazar todos los patrones desde 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. Colocar 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 string en un número de línea específico: puede restringir el comando sed para reemplazar la string 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 string 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, /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: 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 el sed no imprime nada.

  9. Reemplazo de una string en un rango de líneas: puede especificar un rango de números de línea en el comando sed para reemplazar una string.
    $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. Eliminación de líneas de un archivo en particular: el comando SED también se puede usar 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 x a y

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

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

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

    5. Para eliminar la línea de coincidencia de patrón

    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 write.geeksforgeeks.org o enviar tu artículo por correo a review-team@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 tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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