Bon mon probleme, c'est que certaine des mes variable contiendrons
des slashs et des espaces...
Va falloir que j'echappe tout ça...
Absolument pas. Le premier caractère suivant la commande 's' indique le caractere de séparation des arguments de la dite commande.
Ainsi, on pouvoit aussi ecrire : sed '3s;info2;plop;'
Il faut donc trouver un caractère qui n'apparaitra jamais. Pour cela, le ';' est pas mal car on l'utilise quasiment jamais dans une valeur manipulée par shell du fait de sa nature de séparation.
Par contre, ton code est bien compliqué.
Si je résume, tu veux remplacer la second champ de la nieme ligne ?
Auquel cas il vaut mieux tout faire avec awk : awk "NR==$ligne"'{2ドル=plop}' /etc/hosts
Attention, noter le jeux entre double quote et simple quote ainsi que l'absence de blancs entre les deux chaines. Plus classiquement, en échappant cela done : awk "NR==$ligne"{\2ドル=$nouvelle}" /etc/hosts
[^] # Re: avec sed
Posté par Bonnefille Guilhem . En réponse au message Modifier une seul ligne d'un tableau.... Évalué à 3.
des slashs et des espaces...
Va falloir que j'echappe tout ça...
Absolument pas. Le premier caractère suivant la commande 's' indique le caractere de séparation des arguments de la dite commande.
Ainsi, on pouvoit aussi ecrire :
sed '3s;info2;plop;'
Il faut donc trouver un caractère qui n'apparaitra jamais. Pour cela, le ';' est pas mal car on l'utilise quasiment jamais dans une valeur manipulée par shell du fait de sa nature de séparation.
Par contre, ton code est bien compliqué.
Si je résume, tu veux remplacer la second champ de la nieme ligne ?
Auquel cas il vaut mieux tout faire avec awk :
awk "NR==$ligne"'{2ドル=plop}' /etc/hosts
Attention, noter le jeux entre double quote et simple quote ainsi que l'absence de blancs entre les deux chaines. Plus classiquement, en échappant cela done :
awk "NR==$ligne"{\2ドル=$nouvelle}" /etc/hosts