Ola
só pude responder o email agora. quando eu vi a primeira tentativa eu percebi de cara 2 erros.
o principal é que se vc faz o for partindo de 0 ( ou 1 ) e ir incrementando, vc cai uma situação indefinida logo no segundo passo.
por exemplo, se vc começa com i = 0 vc faz
troca nItem="0" por nItem="1"
e agora vc tem 2 nItem="1" e o segundo passo vai ser confuso. o phfbettega respondeu corretamente
Agora sobre a solução, vc pode usar shell pra criar um script sed - imagine este arquivo
bash$ cat teste.xml
<det nItem="0">
<det nItem="1">
<det nItem="2">
<det nItem="3">
<det nItem="4">
<det nItem="5">
<det nItem="6">
<det nItem="7">
<det nItem="8">
<det nItem="9">
vamos gerar um sed q mude o 9 para 10, o 8 para 9 .. até o 0 virar 1 -- como vc precisa
bash$ for i in `seq 10 -1 1`; do
j=$[ $i - 1 ] ;
echo "s/nItem=\"$j\"/nItem=\"$i\"/" ;
done
s/nItem="9"/nItem="10"/
s/nItem="8"/nItem="9"/
s/nItem="7"/nItem="8"/
s/nItem="6"/nItem="7"/
s/nItem="5"/nItem="6"/
s/nItem="4"/nItem="5"/
s/nItem="3"/nItem="4"/
s/nItem="2"/nItem="3"/
s/nItem="1"/nItem="2"/
s/nItem="0"/nItem="1"/
agora vamos salvar isso em um arquivo
bash$ for i in `seq 10 -1 1`; do j=$[ $i - 1 ] ; echo "s/nItem=\"$j\"/nItem=\"$i\"/" ; done > change.sed
e vamos aplicar no seu xml, salvando um backup
bash$ sed -i.old -f change.sed teste.xml
veja as alterações -- agora só falta adaptar para 300
bash$ cat teste.xml
<det nItem="1">
<det nItem="2">
<det nItem="3">
<det nItem="4">
<det nItem="5">
<det nItem="6">
<det nItem="7">
<det nItem="8">
<det nItem="9">
<det nItem="10">
enquanto o arquivo original foi preservado. se vc não precisa vc pode usar sed -i apenas, sem o .old
bash$ cat teste.xml.old
<det nItem="0">
<det nItem="1">
<det nItem="2">
<det nItem="3">
<det nItem="4">
<det nItem="5">
<det nItem="6">
<det nItem="7">
<det nItem="8">
<det nItem="9">