Este script usa sed para mudar todos "" para "coisas novas". Como alguém mudaria apenas o "" após o aaaa: usando sed ou qualquer outra coisa?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Eu posso não entender sua pergunta. Se você deseja substituir SOMENTE o valor após 'aaaa', use a resposta anterior. Se você deseja substituir QUALQUER valor após 'aaaa', tente este procedimento:
sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt
Ainda não o testou: D ...
Resposta obtida de O'Reilly - Sed & Awk 2ª adição Ao redor da página 152
Escreva um script em um arquivo
/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}
Aplique isso aos seus dados com o método usual
script sed -f sample.txt
Este script diz procurar yyy :. Quando encontrado, leia outra linha no buffer de padrão (soa como Star Trek Transporter). Agora faça como / comando nas linhas unidas. Então, estamos procurando por aaaa: nova linha "". Se encontrado, substitua por aaaa: \ observe a nova linha real com barra invertida e, em seguida, "coisas novas"
Boa sorte
Acho que quando as coisas ultrapassam um certo nível de complexidade, mudo para o perl . O s2p tratará da tradução da sua solução sed atual. Ou você pode escrevê-lo do zero trivialmente. A expressão de pesquisa / substituição permanecerá a mesma.
fonte