Agregar texto a la primera aparición de un patrón usando sed

Agregar texto a la primera aparición de un patrón usando sed

Digamos que hay un archivo de texto como el siguiente:

Hello world
types=""
Mario
types="Game"

Lo que quiero hacer es encontrar la primera aparición type=""y agregarle la palabra "programa". Necesito salida como:

Hello world
types="program"
Mario
types="Game"

Necesito usar esto en scripts de shell de Unix. Lo que probé es:

sed -i '1,/types=""/s/types=""/types="program"/' filename

Tal como se ve el comando, solo inserta, no agrega. Intenté agregar a\pero todavía no funciona.

Respuesta1

Su sedsustitución de una sola línea parece funcionar como pretende:

$ cat t.txt
Hello world
types=""
Mario
types="Game"

$ sed '1,/types=""/s/types=""/types="program"/' t.txt

Hello world
types="program"
Mario
types="Game"

Podría valer la pena editar su pregunta para mostrar quéobtiene cuando ejecuta su sedcomando (sin la -iopción para que los resultados se impriman en la terminal).

Por cierto, su rango de 1,/types=""/es redundante. Puedes simplificarlo como:

sed '/types=""/s/types=""/types="program"/' t.txt

información relacionada