Anexar texto à primeira ocorrência de um padrão usando sed

Anexar texto à primeira ocorrência de um padrão usando sed

Digamos que haja um arquivo de texto como abaixo:

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

O que eu quero fazer é encontrar a primeira ocorrência type=""e acrescentar a palavra "programa". Eu preciso de saída como:

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

Eu preciso usar isso em scripts de shell Unix. O que eu tentei é:

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

Pela aparência do comando, ele está apenas inserindo, não anexando. Tentei adicionar a\, mas ainda não está funcionando.

Responder1

Sua sedsubstituição de uma linha parece já funcionar como pretendido:

$ 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"

Talvez valha a pena editar sua pergunta para mostrar o quevocêget quando você executa seu sedcomando (sem a -iopção para que os resultados sejam impressos no terminal).

Aliás, seu alcance 1,/types=""/é redundante. Você pode simplificá-lo como:

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

informação relacionada