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.