Eu tenho um arquivo de texto semelhante ao exemplo abaixo.
eu quero inserir
<string>insert-me</string>
na linha indicada.
Como eu posso fazer isso? Eu tentei variações semelhantes a esta:
sed "/s/<key>first</key>/\n <array>/\n/test/g" test.txt
e continuo recebendo o erro "bandeira incorreta no comando substituto".
Obrigado
exemplo de arquivo de texto:
<record>
<key>first</key>
<array>
--I want to insert the line here--
<string>hello</string>
<string>world</string>
</array>
</record>
<record>
<key>second</key>
<array>
<string>its</string>
<string>me</string>
<string>again</string>
<string>hello</string>
<string>world</string>
<string>again</string>
</array>
</record>
Existem vários problemas aqui (além do geral de tentar analisar dados estruturados com ferramentas regex)
se o seu padrão (ou substituto) contiver barras, você precisará usar um separador diferente para os comandos sed ou escapar das barras
sed é (normalmente) orientado a linhas, então você não pode combinar os limites das linhas, a menos que você puxe linhas adicionais para o espaço do padrão com
N
combinar quantidades específicas de espaço em branco tornará tudo ainda mais frágil
Então, por exemplo, você poderia fazer:
ou (mais naturalmente) usando um anexo em vez de um substituto