Com o seguinte conteúdo no arquivo test :
Here
are
some
lines
o seguinte comando fornece a seguinte saída:
$ NL=$(wc -l test); sed ${NL%% *}'iMYNEWLINE' test
Here
are
some
MYNEWLINE
lines
Use -i com sed se sua versão for compatível para editar o arquivo no local.
A verdadeira "mágica" é o comando sed do formulário " #itext ", onde # é um número de linha, i denota "inserir" e text é o texto a ser inserido. Aqui ele se expandirá para
sed '4iMYNEWLINE' test
Eu recebo a contagem de linha de wc . Dá saída no formulário:
$ wc -l test
4 test
mas eu só quero o número, então eu uso a expansão de chave de concha para limpar tudo que combina com o padrão * , que é "espaço e depois qualquer coisa". Essa parte é apenas uma peculiaridade do uso de wc .
Como estou escrevendo, vejo sua edição que propõe o uso de sed mais ou menos exatamente dessa maneira, então eu poderia ter salvo alguns textos, eu acho :-). No seu caso, o comando final poderia ser, por exemplo:
FN="zazzercode.gwt.xml"; NL=$(wc -l "$FN"); sed -i ${NL%% *}'i\ <set-property name="user.agent" value="safari" />' "$FN"
Observe que incluí -i : teste o comando sem ele antes de adicionar essa opção.