Edition de fichier en script bash
Résolu/Fermé
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
-
8 sept. 2009 à 15:18
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 14 sept. 2009 à 18:25
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 14 sept. 2009 à 18:25
A voir également:
- Edition de fichier en script bash
- Fichier rar - Guide
- Script vidéo youtube - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
11 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 896
8 sept. 2009 à 16:29
8 sept. 2009 à 16:29
Salut,
Et pour ton histoire d'avant-dernier champ :
Et pour ton histoire d'avant-dernier champ :
jp@MDK:~/tmpfs ssh$ cat plop blablabla blablabl blablabla blablalba RSYNC_ENABLE= blablabla blablabla blablabla bla-bla-bla-bla-bla-bla-bla-bla-bla jp@MDK:~/tmpfs ssh$ sed 's/RSYNC_ENABLE=/&true/; s/\(.*\)-\(.*-\)/\1BLA\2/' plop blablabla blablabl blablabla blablalba RSYNC_ENABLE=true blablabla blablabla blablabla bla-bla-bla-bla-bla-bla-blaBLAbla-bla jp@MDK:~/tmpfs ssh$Bobby : Je me suis permis d'optimiser ta syntaxe ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
10 sept. 2009 à 15:37
10 sept. 2009 à 15:37
Tu rajouteras le "-i.bak" si tu vois que ça passe bien...
sed ' s/^\*\.\*;auth,authpriv.none/&,mail\.none/ /^mail\.\(\* \|info \|warn \|err\)/ s/var/home/ ' syslog
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 15:54
10 sept. 2009 à 15:54
J'ai juste sorti les espaces après info et warn et c'est nickel. j'avais pas pris suffisamment de recul là ... ridicule. Quelle puissance les expressions régulières ...
Bon, je poursuis mon script.
Merci beaucoup.
Stéphane
Bon, je poursuis mon script.
Merci beaucoup.
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
10 sept. 2009 à 15:57
10 sept. 2009 à 15:57
Oups j'avions aussi oublié de les retirer (les espaces) ;-((
De rien ;-)
De rien ;-)
Pour remplacer une expression on effectue une substitution.
j'ai vu ça en perl il y a un paquet d'années...
http://esbs.unistra.fr/
s/RSYNC_ENABLE=/RSYNC_ENABLE=true/
Dans cet exercice est indiqué comment crrer un tableau à partir d'un séparateur
http://esbs.unistra.fr/#exo1
@tab=split(' ',$string)
Comme le nombre de colonne dans le fichier master.cf est fixe c'est pas trop compliqué
dans cet exemple, la 7e colonne sera $tab[6]="-" (on démarre à zero)
perl c'est trés puissant pour manipuler des données, ca vaut le coup de s'y pencher si ce genre de problème revient souvent.
On trouve plei de cours universitaires :
http://www.med.univ-rennes1.fr/~poulique/cours/perl/perl_html/introperl.html
ou autre :
https://formation-perl.fr/guide-perl.html
j'ai vu ça en perl il y a un paquet d'années...
http://esbs.unistra.fr/
s/RSYNC_ENABLE=/RSYNC_ENABLE=true/
Dans cet exercice est indiqué comment crrer un tableau à partir d'un séparateur
http://esbs.unistra.fr/#exo1
@tab=split(' ',$string)
Comme le nombre de colonne dans le fichier master.cf est fixe c'est pas trop compliqué
dans cet exemple, la 7e colonne sera $tab[6]="-" (on démarre à zero)
perl c'est trés puissant pour manipuler des données, ca vaut le coup de s'y pencher si ce genre de problème revient souvent.
On trouve plei de cours universitaires :
http://www.med.univ-rennes1.fr/~poulique/cours/perl/perl_html/introperl.html
ou autre :
https://formation-perl.fr/guide-perl.html
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
8 sept. 2009 à 16:14
8 sept. 2009 à 16:14
Bonjour,
une piste avec sed :
une piste avec sed :
> redfox@mandriva[192.168.1.2]:~$ cat essaiscript blablabla blablabl blablabla blablalba RSYNC_ENABLE= blablabla blablabla blablabla > redfox@mandriva[192.168.1.2]:~$ > redfox@mandriva[192.168.1.2]:~$ sed -i 's/RSYNC_ENABLE=/RSYNC_ENABLE=true/' essaiscript > redfox@mandriva[192.168.1.2]:~$ cat essaiscript blablabla blablabl blablabla blablalba RSYNC_ENABLE=true blablabla blablabla blablabla > redfox@mandriva[192.168.1.2]:~$
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
8 sept. 2009 à 18:50
8 sept. 2009 à 18:50
Merci à tous,
je test tout ça asap ... surtout que j'ai déjà bricoler un parser de log en perl avec beaucoup d'aide de jipicy ...
Stéphane
je test tout ça asap ... surtout que j'ai déjà bricoler un parser de log en perl avec beaucoup d'aide de jipicy ...
Stéphane
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 11:45
10 sept. 2009 à 11:45
Bonjour,
Finalement je ne m'en sors pas, je vous détail la tâche qui vous semblera surement simplicime ... :
J'ai le fichier de conf par défaut de postfix suivant : /etc/postfix/master.cf
et je veux :
1 - paramétrer 2 lignes :
2 - insérer 2 lignes entre les lignes :
sous la forme
Comment préciser à sed, quelle lignes modifier ? comment insérer des lignes ?
Merci pour votre aide.
Stéphane
Finalement je ne m'en sors pas, je vous détail la tâche qui vous semblera surement simplicime ... :
J'ai le fichier de conf par défaut de postfix suivant : /etc/postfix/master.cf
# # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd #submission inet n - - - - smtpd # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - - - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
et je veux :
1 - paramétrer 2 lignes :
smtp inet n - - - 20 smtpd smtp unix - - - - 30 smtp
2 - insérer 2 lignes entre les lignes :
scache unix - - - - 1 scache # # ====================================================================
sous la forme
scache unix - - - - 1 scache yahoo_tr unix - - n - 5 smtp hotmail_tr unix - - n - 5 smtp # # ====================================================================
Comment préciser à sed, quelle lignes modifier ? comment insérer des lignes ?
Merci pour votre aide.
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
10 sept. 2009 à 12:05
10 sept. 2009 à 12:05
Re-
Essaye ça :
Le fichier "plop" chez moi est une copie de ton "master.cf".
Et voilà les différences entre "plop" et "plop.bak" :
Essaye ça :
jp@MDK:~/tmpfs ssh$ cat prog.sed /^smtp inet/{ s/\(.*\)-/\120/ } /^smtp unix/{ s/\(.*\)-/\130/ } /^scache/a\ yahoo_tr unix - - n - 5 smtp\ hotmail_tr unix - - n - 5 smtp jp@MDK:~/tmpfs ssh$ sed -i.bak -f prog.sed plop
Le fichier "plop" chez moi est une copie de ton "master.cf".
Et voilà les différences entre "plop" et "plop.bak" :
jp@MDK:~/tmpfs ssh$ diff plop plop.bak 11c11 < smtp inet n - - - 20 smtpd --- > smtp inet n - - - - smtpd 36c36 < smtp unix - - - - 30 smtp --- > smtp unix - - - - - smtp 52,53d51 < yahoo_tr unix - - n - 5 smtp < hotmail_tr unix - - n - 5 smtp jp@MDK:~/tmpfs ssh$;-))
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 12:52
10 sept. 2009 à 12:52
bon ... j'ai honte mais ...
Je souhaite avoir les commandes dans le script principal par un sous script sed (fichier prog.sed)
je pensais pouvoir faire :
set '/^smtp inet/{ s/\(.*\)-/\120/' /etc/postfix/master.cf
ça ne renvois pas d'erreur mais ne modifie pas le fichier ... est-ce lié aux espaces entre smtp et inet ?
Stéphane
Je souhaite avoir les commandes dans le script principal par un sous script sed (fichier prog.sed)
je pensais pouvoir faire :
set '/^smtp inet/{ s/\(.*\)-/\120/' /etc/postfix/master.cf
ça ne renvois pas d'erreur mais ne modifie pas le fichier ... est-ce lié aux espaces entre smtp et inet ?
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
10 sept. 2009 à 13:22
10 sept. 2009 à 13:22
Pour qu'un fichier soit modifié "en place" il faut ajouter l'option "-i" (in place) à la commande "sed", éventuellement y adjoindre une option de sauvegarde du fichier "-i.bak".
Par contre, effectivement si c'est des tabulations et non des espaces qu'il y a entre "smtp" et "unix/inet", il faut soit écrire :
Essaie comme ça dans ton script :
Par contre, effectivement si c'est des tabulations et non des espaces qu'il y a entre "smtp" et "unix/inet", il faut soit écrire :
/^smtp inet/ ou /^smtp *inet/
Essaie comme ça dans ton script :
sed -i.bak ' /^smtp inet/{ s/\(.*\)-/\120/ } /^smtp unix/{ s/\(.*\)-/\130/ } /^scache/a\ yahoo_tr unix - - n - 5 smtp\ hotmail_tr unix - - n - 5 smtp ' /etc/postfix/master.cf
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
14 sept. 2009 à 10:11
14 sept. 2009 à 10:11
Bonjour,
Je reviens vers vous car je dois modifier ce fichier encore une fois, le but jusqu'alors etait de mettre des valeurs dans les bonnes colonnes, maintenant je dois ajouter une ligne complete SOUS la ligne en question, dont je ne suis pas sûr que la position dans le fichier soit toujours la même ... et je n'ai pas toujours la même ligne en dessous :
je veux ajouter en dessous de cette ligne (commençant par "smtp(.*)unix") :
idem plus bas :
Merci d'avance ...
Stéphane
Je reviens vers vous car je dois modifier ce fichier encore une fois, le but jusqu'alors etait de mettre des valeurs dans les bonnes colonnes, maintenant je dois ajouter une ligne complete SOUS la ligne en question, dont je ne suis pas sûr que la position dans le fichier soit toujours la même ... et je n'ai pas toujours la même ligne en dessous :
smtp unix - - - - - smtp
je veux ajouter en dessous de cette ligne (commençant par "smtp(.*)unix") :
smtp unix - - - - - smtp -o smtp_bind_address='"$ipfailover"'
idem plus bas :
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= -o smtp_bind_address='"$ipfailover"'
Merci d'avance ...
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
14 sept. 2009 à 10:40
14 sept. 2009 à 10:40
Ben la solution est déjà dans tes demandes précédentes :
Ce qui donne :
sed -i.bak ' /^smtp inet/{ s/\(.*\)-/\120/ } /^smtp unix/{ s/\(.*\)-/\130/ } /^scache/a\ yahoo_tr unix - - n - 5 smtp\ hotmail_tr unix - - n - 5 smtp ' /etc/postfix/master.cfTout ce que tu as à faire c'est de changer le motif ("/^scache/" dans l'exemple ci-dessus), le reste de la syntaxe ne bouge pas...
Ce qui donne :
jp@MDK:~/tmpfs ssh$ cat plop # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd #submission inet n - - - - smtpd # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - - - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} jp@MDK:~/tmpfs ssh$ sed '/^smtp unix/{ a\ \t-o smtp_bind_address=$ipfailover } /^relay unix/n;{ /-o smtp_fallback_relay=/{ a\ \t-o smtp_bind_address=$ipfailover } } ' plop # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd #submission inet n - - - - smtpd # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - - - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp -o smtp_bind_address=$ipfailover # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= -o smtp_bind_address=$ipfailover # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} jp@MDK:~/tmpfs ssh$;-))
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
14 sept. 2009 à 18:16
14 sept. 2009 à 18:16
Le pire c'est que j'avais réfléchis avant de poster ....
Merci encore.
Stéphane
Merci encore.
Stéphane
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 12:28
10 sept. 2009 à 12:28
ok, je test ça de suite,
sinon est-il possible d'utiliser des variables dans la commande sed ?
genre :
sed -i 's/$variable1/$variable2 $variable1/' /plop
ou
sed -i 's/'+$variable1+'/'+$variable2+' '+$variable1+'/' /plop
???
Stéphane
sinon est-il possible d'utiliser des variables dans la commande sed ?
genre :
sed -i 's/$variable1/$variable2 $variable1/' /plop
ou
sed -i 's/'+$variable1+'/'+$variable2+' '+$variable1+'/' /plop
???
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
10 sept. 2009 à 12:30
10 sept. 2009 à 12:30
Oui, mais sous certaines conditions : https://forums.commentcamarche.net/forum/affich-37620020-sed-introduction-a-sed-part-ii#le-remplacement-de-variables
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
10 sept. 2009 à 12:53
10 sept. 2009 à 12:53
ça fonctionne nickel les variables maintenant avec le '" "'
merci
merci
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 14:51
10 sept. 2009 à 14:51
bon ... je galère toujours ... pourtant ça a l'air simple ... :
j'ai un fichier syslog.conf
Je veux modifier certaines lignes :
J'ai donc essayé :
mais ça ne fonctionne pas ... il remplace les remplacements avec l'expression mail.*
comment escaper l'étoile comme un caractère et pas un joker ? (j'ai essayé le \ et entre " sans succès)
Stéphane
j'ai un fichier syslog.conf
# /etc/syslog.conf Configuration file for syslogd. # # For more information see syslog.conf(5) # manpage. # # First some standard logfiles. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log # # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # Logging for INN news system # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice # # Some `catch-all' logfiles. # *.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages # # Emergencies are sent to everybody logged in. # *.emerg * # # I like to have messages displayed on the console, but only on a virtual # console I usually leave idle. # #daemon,mail.*;\ # news.=crit;news.=err;news.=notice;\ # *.=debug;*.=info;\ # *.=notice;*.=warn /dev/tty8 # The named pipe /dev/xconsole is for the `xconsole' utility. To use it, # you must invoke `xconsole' with the `-file' option: # # $ xconsole -file /dev/xconsole [...] # # NOTE: adjust the list below, or you'll go crazy if you have a reasonably # busy site.. # daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole
Je veux modifier certaines lignes :
*.*;auth,authpriv.none,mail.none -/var/log/syslog mail.* -/home/log/mail.log #mail.info -/home/log/mail.info mail.warn -/home/log/mail.warn mail.err /home/log/mail.err
J'ai donc essayé :
echo "syslog" sed -i.bak ' /^*.*;auth,authpriv.none/{ s/\(.*\)/\&*.*;auth,authpriv.none,mail.none -\/var\/log\/syslog/ } /^mail.*/{ s/\(.*\)/\&mail.* -\/home\/log\/mail.log/ } /^mail.info/{ s/\(.*\)/\&#mail.info -\/home\/log\/mail.info/ } /^mail.warn/{ s/\(.*\)/\&mail.warn -\/home\/log\/mail.warn/ } /^mail.err/{ s/\(.*\)/\&mail.err \/home\/log\/mail.err/ } ' /etc/syslog.conf
mais ça ne fonctionne pas ... il remplace les remplacements avec l'expression mail.*
comment escaper l'étoile comme un caractère et pas un joker ? (j'ai essayé le \ et entre " sans succès)
Stéphane
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
10 sept. 2009 à 14:59
10 sept. 2009 à 14:59
*.*;auth,authpriv.none,mail.none -/var/log/syslog mail.* -/home/log/mail.log #mail.info -/home/log/mail.info mail.warn -/home/log/mail.warn mail.err /home/log/mail.err
Tu veux le modifier en quoi ?
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
10 sept. 2009 à 15:16
10 sept. 2009 à 15:16
Je veux modifier :
*.*;auth,authpriv.none -/var/log/syslog
en
*.*;auth,authpriv.none,mail.none -/var/log/syslog
mail.* -/var/log/mail.log
en
mail.* -/home/log/mail.log
mail.info -/var/log/mail.info
en
#mail.info -/home/log/mail.info
mail.warn -/var/log/mail.warn
en
mail.warn -/home/log/mail.warn
mail.err /var/log/mail.err
en
mail.err /home/log/mail.err
Stéphane
*.*;auth,authpriv.none -/var/log/syslog
en
*.*;auth,authpriv.none,mail.none -/var/log/syslog
mail.* -/var/log/mail.log
en
mail.* -/home/log/mail.log
mail.info -/var/log/mail.info
en
#mail.info -/home/log/mail.info
mail.warn -/var/log/mail.warn
en
mail.warn -/home/log/mail.warn
mail.err /var/log/mail.err
en
mail.err /home/log/mail.err
Stéphane
8 sept. 2009 à 18:30
:-))