Bonjour,
Plusieurs choses à dire en réponse à votre message...
1. Cette ligne ne fait pas ce que vous voulez faire :
Je pense que vous voulez écrire
sed -i "${i}d" "$fichier"
En effet, les guillemets simple en shell ne permette pas l'interprétation de $ comme caractère spécial :
1 2 3 4 5
| romain@lilibox:~/test$ toto=foobar
romain@lilibox:~/test$ echo "$toto"
foobar
romain@lilibox:~/test$ echo '$toto'
$toto |
Ceci doit expliquer pourquoi vous ne retrouvez pas les modifications dans votre fichier, malgré l'option -i de sed.
2. Lorsque vous faites un sed -i "1d" fichier, vous supprimer la première ligne du fichier. La 2e ligne devient alors votre première ligne. Aviez-vous cet état de fait à l'esprit ? Il faut être sacrément malin pour arriver au résultat atendu avec votre boucle.
3. La commande "d" de sed à la particularité d'accepter un ensemble de lignes, ce qui est peut-être ce que vous souhaitez faire.
1 2 3 4 5 6 7 8 9 10 11
| romain@lilibox:~/test$ cat fichier.orig
ligne1
ligne2
ligne3
ligne4
ligne5
ligne6
romain@lilibox:~/test$ sed "1,3d" fichier.orig
ligne4
ligne5
ligne6 |
Magique, non ?
Partager