[bash linux] remplacer une ligne

Résolu/Fermé
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 27 mai 2008 à 18:14
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 29 mai 2008 à 20:14
salut a tous,
je voudrais ecrire une ligne de commande qui remplace une ligne par une autre dans un fichier.
Il s'agit du fichier /etc/proftpd/proftpd.conf
Et je voudrais remplacer la ligne
UseIPv6                         on

par la ligne
UseIPv6                         off

Comme on est pas sur du nombre d'espace, je voudrais que la commande trouve toute ligne du style
UseIPv6*

Je voudrais que le test se fasse seulement sur le debut de la ligne mais le remplacement sur la ligne entiere. C'est possible ?
Santiago
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
29 mai 2008 à 20:14
sed '/^[uU][sS][eE][iI][pP][vV]6/ s/on/Off/I'
;-))
4
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
27 mai 2008 à 18:20
Salut,

Avec "sed" c'est faisable. Dans un 1er temps essaie comme ça :
sed '/^UseIPv6/ s/on/off/' /etc/proftpd/proftpd.conf 
puis si le résultat escompté est satisfaisant, rajoute le switch "-i" de cette manière :
sed -i.BAK '/^UseIPv6/ s/on/off/' /etc/proftpd/proftpd.conf 
;-))
3
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
29 mai 2008 à 19:50
Salut jipicy,
Merci beaucoup pour ta reponse, ca marche.
Est il possible de rendre le test insensible a la casse ?
je voudrais qu'il trouve
UseIPv6 mais aussi useipv6 ou UseipV6
Je voudrais aussi qu'il remplace On ou on par Off
Merci de ton aide
Santiago
1