No entendí la utilidad del comando ‘sed’. ¿Por qué no se guardan los cambios? ¿Qué significa que cree un “nuevo flujo” con la modificación?

Gonzalo Gramaglia

Gonzalo Gramaglia

Pregunta
studenthace 5 años

No entendí la utilidad del comando ‘sed’. ¿Por qué no se guardan los cambios? ¿Qué significa que cree un “nuevo flujo” con la modificación?

2 respuestas
para escribir tu comentario
    Jorge Cruz Perez

    Jorge Cruz Perez

    studenthace 5 años

    Cada comando tiene sus reglas y tareas, en este caso no guarda, pero si quieres guardarlo tambien es muy sencillo, simplemente al final del comando pones

    sed 's/Hanks/Selleck/g' dump1.sql > archivo.txt
    en este caso

    > archivo.txt
    guarda el resultado en este archivo

    Alberto Perdomo

    Alberto Perdomo

    studenthace 5 años

    Pues SED traduce Stream Editor sino estoy mal, y es muy usado para automatizar las tareas de modificación de contenido de un archivo.

    Recibe por input(stdin) una serie de lineas para manipular y aplica a cada una de ellas comandos especificados,a un rango de lineas o a las que cumplan una condición . Es muy comun que este input este dentro de un archivo de texto plano.

    Por ejemplo:

    Sustituir apariciones de cadena1 por cadena2 en todo el archivo: # sed 's/cadena1/cadena2/g' archivo > archivo2 Sustituir apariciones de cadena1 por cadena2 en las líneas 1 a 10: # comando | sed '1,10 s/cadena1/cadena2/g' Eliminar las líneas 2 a 7 del archivo # sed '2,7 d' archivo > archivo2 Buscar un determinado patrón en un fichero: # sed -e '/cadena/ !d' archivo Buscar AAA o BBB o CCC en la misma línea: # sed '/AAA/!d; /BBB/!d; /CCC/!d' archivo Buscar AAA y BBB y CCC: # sed '/AAA.*BBB.*CCC/!d' archivo Buscar AAA o BBB o CCC (en diferentes líneas, o grep -E): # sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # gsed '/AAA\|BBB\|CCC/!d'

    El formato básico de uso de sed es:

    sed [-ns] '[direccion] instruccion argumentos'

    Donde:

    • [direccion] es opcional, siendo un número de línea (N), rango de números de línea (N,M) o búsqueda de regexp (/cadena/) indicando el ámbito de actuación de las instrucciones. Si no se especifica [direccion], se actúa sobre todas las líneas del flujo.

    • Instruccion puede ser:

      • i = Insertar línea antes de la línea actual.
      • a = Insertar línea después de la línea actual.
      • c = Cambiar línea actual.
      • d = Borrar línea actual.
      • p = Imprimir línea actual en stdout.
      • s = Sustituir cadena en línea actual.
      • r archivo = Añadir contenido de "archivo" a la línea actual.
      • w archivo = Escribir salida a un archivo.
      • ! = Aplicar instrucción a las líneas no seleccionadas por la condición.
      • q = Finalizar procesamiento del archivo.
    • -n: No mostrar por stdout las líneas que están siendo procesadas.

    • -s: Tratar todos los ficheros entrantes como flujos separados.

    Para más info se puede escribir sobre la línea de comandos :

    man sed
Curso de Introducción a la Terminal y Línea de Comandos 2019

Curso de Introducción a la Terminal y Línea de Comandos 2019

Explora la terminal y optimiza la navegación y ejecución de programas en sistemas operativos Unix. Conociendo y dominando la terminal, podrás invocar y ejecutar programas, crear directorios de los mismos y navegar en ellos de una manera veloz y eficiente.

Curso de Introducción a la Terminal y Línea de Comandos 2019
Curso de Introducción a la Terminal y Línea de Comandos 2019

Curso de Introducción a la Terminal y Línea de Comandos 2019

Explora la terminal y optimiza la navegación y ejecución de programas en sistemas operativos Unix. Conociendo y dominando la terminal, podrás invocar y ejecutar programas, crear directorios de los mismos y navegar en ellos de una manera veloz y eficiente.