[sed] Remplacement d'une chaine de caractaire
Résolu/Fermé
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
-
29 mai 2011 à 03:51
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 - 29 mai 2011 à 20:00
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 - 29 mai 2011 à 20:00
A voir également:
- [sed] Remplacement d'une chaine de caractaire
- Coco chat remplacement - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Chaine tnt gratuite sur mobile - Guide
- Uptobox remplacement - Accueil - Services en ligne
- Plus de chaine tv - Guide
5 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
29 mai 2011 à 10:08
29 mai 2011 à 10:08
Salut,
Et avec un "sleep", ça pourrait le faire aussi...
;-))
Et avec un "sleep", ça pourrait le faire aussi...
$ cat fich.txt Mon IP: 192.168.0.1 $ cat ip.txt 192.168.0.2 192.168.0.3 192.168.0.4 192.168.0.5 192.168.0.6 192.168.0.7 192.168.0.8 192.168.0.9 192.168.0.10 $ cat foo.sh #! /bin/bash while read line do sed "s/\(.*\) .*/\1 ${line}/" fich.txt echo "Attente ....." sleep 3 # A remplacer par 60 done < ip.txt $ ./foo.sh Mon IP: 192.168.0.2 Attente ..... Mon IP: 192.168.0.3 Attente ..... Mon IP: 192.168.0.4 Attente ..... Mon IP: 192.168.0.5 Attente ..... etc. etc. $
;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
Modifié par lami20j le 29/05/2011 à 08:34
Modifié par lami20j le 29/05/2011 à 08:34
Salut,
Une idée c'est de créer un fichier compteur qui incremente à chaque exécution de script
Je n'ai pas testé avec cron.
Pour cron il faudrait mettre les chemin complet des fichiers et commandes
GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
Une idée c'est de créer un fichier compteur qui incremente à chaque exécution de script
Je n'ai pas testé avec cron.
Pour cron il faudrait mettre les chemin complet des fichiers et commandes
lami20j@debian-acer:~$ cat fichier.txt Mon IP: 192.168.0.1 lami20j@debian-acer:~$ cat IP.txt 192.168.0.2 192.168.0.3 192.168.0.4 192.168.0.5 192.168.0.6 192.168.0.7 192.168.0.8 192.168.0.9 192.168.0.10 lami20j@debian-acer:~$ cat IP.compteur 1 lami20j@debian-acer:~$ cat changeIP.sh #!/bin/bash n=$(cat IP.compteur) IP_OLD=$(egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' fichier.txt) IP_NEW=$(egrep -m $n '([0-9]{1,3}\.){3}[0-9]{1,3}' IP.txt |tail -1) sed -i 's/'"$IP_OLD"'/'"$IP_NEW"'/' fichier.txt echo $((n+1)) > IP.compteur if [ $n = "9" ] then echo 1 > IP.compteur fi lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.2 2 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.3 3 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.4 4 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.5 5 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.6 6 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.7 7 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.8 8 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.9 9 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.10 1 lami20j@debian-acer:~$ sh changeIP.sh lami20j@debian-acer:~$ cat fichier.txt IP.compteur Mon IP: 192.168.0.2 2
GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 11:05
29 mai 2011 à 11:05
yep ^^
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 10:09
29 mai 2011 à 10:09
salut l'ami
Encore une fois l'ami20j claire net et précis , sa fonctionne du premier coup !
Je trouverai bien une solution un jour ou l'autre pour te dire MERCI !!!!!!!!
thankSSSSS
Encore une fois l'ami20j claire net et précis , sa fonctionne du premier coup !
Je trouverai bien une solution un jour ou l'autre pour te dire MERCI !!!!!!!!
thankSSSSS
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 17:57
29 mai 2011 à 17:57
De retour
Vous pouvez m'adapter la regex a une autre chaine de caractère SVP ? J'ai vraiment du mal avec les regex
remplacer :
Mon IP: 192168.0.1
Par
smtp_bind_address = 192.168.0.1
Merci d'avance
PS: lami20j stp peut tu me renvoyer le lien que tu ma filé il y a pas longtemps pour les regex je le trouve plus :-(
Vous pouvez m'adapter la regex a une autre chaine de caractère SVP ? J'ai vraiment du mal avec les regex
remplacer :
Mon IP: 192168.0.1
Par
smtp_bind_address = 192.168.0.1
Merci d'avance
PS: lami20j stp peut tu me renvoyer le lien que tu ma filé il y a pas longtemps pour les regex je le trouve plus :-(
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
29 mai 2011 à 18:03
29 mai 2011 à 18:03
Avec mon script il n'y a rien à changer, ça marchera aussi bien avec
"smtp_bind_address = 192.168.0.1"
qu'avec "Mon IP: 192168.0.1"
;-))
"smtp_bind_address = 192.168.0.1"
qu'avec "Mon IP: 192168.0.1"
;-))
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 18:27
29 mai 2011 à 18:27
Sa fonctionne partiellement ...
Comme je le précise plus haut dans ce fichier main.cf qui est fichier de conf de postfix il y a plusieurs ligne qui ont la même forme, voici un bout de ce fichier :
Avec ton script (ce qui est logique) sa remplace toutes les lignes par :
smtp_use_tls = 192.168.0.2
smtp_tls_note_starttls_offer = 192.168.0.2
smtpd_tls_auth_only = 192.168.0.2
smtpd_tls_key_file = 192.168.0.2
smtpd_tls_cert_file = 192.168.0.2
smtpd_tls_CAfile = 192.168.0.2
smtpd_tls_loglevel = 192.168.0.2
:-)
Comme je le précise plus haut dans ce fichier main.cf qui est fichier de conf de postfix il y a plusieurs ligne qui ont la même forme, voici un bout de ce fichier :
smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1
Avec ton script (ce qui est logique) sa remplace toutes les lignes par :
smtp_use_tls = 192.168.0.2
smtp_tls_note_starttls_offer = 192.168.0.2
smtpd_tls_auth_only = 192.168.0.2
smtpd_tls_key_file = 192.168.0.2
smtpd_tls_cert_file = 192.168.0.2
smtpd_tls_CAfile = 192.168.0.2
smtpd_tls_loglevel = 192.168.0.2
:-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
29 mai 2011 à 18:32
29 mai 2011 à 18:32
D'où l'intérêt d'afficher des exemples CONCRETS ;-((
Par contre je ne vois nullement dans ton bout de fichier de "smtp_bind_address" ;-\
C'est bien cette ligne que tu veux remplacer chaque minute ?
Par contre je ne vois nullement dans ton bout de fichier de "smtp_bind_address" ;-\
C'est bien cette ligne que tu veux remplacer chaque minute ?
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 18:40
29 mai 2011 à 18:40
oui excuse pour l'imprécision,
il y a bien la ligne smtp_bind_address dans ce fichier je n'est copier que quelques lignes a titre indicatif
merci
il y a bien la ligne smtp_bind_address dans ce fichier je n'est copier que quelques lignes a titre indicatif
merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
29 mai 2011 à 18:46
29 mai 2011 à 18:46
$ cat fich.txt smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtp_bind_address = 192.168.0.1 $ cat foo.sh #! /bin/bash while read line do sed "/^smtp_bind_address/ s/\(.*\) .*/\1 ${line}/" fich.txt echo "Attente ....." sleep 3 # A remplacer par 60 done < ip.txt $ ./foo.sh smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtp_bind_address = 192.168.0.2 Attente ..... smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtp_bind_address = 192.168.0.3 Attente ..... smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtp_bind_address = 192.168.0.4 Attente ..... etc. etc. ... $
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 19:44
29 mai 2011 à 19:44
A oué !
J'ai trouver héhéhé
Mesdames et Messieurs voici la plus grande base de donner de regex dispo sur le web !
A consommé SANS modération, Profitez en :
CLIQUEZ ICI
MDR
J'ai trouver héhéhé
Mesdames et Messieurs voici la plus grande base de donner de regex dispo sur le web !
A consommé SANS modération, Profitez en :
CLIQUEZ ICI
MDR
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 mai 2011 à 19:49
29 mai 2011 à 19:49
Il ne faut pas exagérer quand même.
Cette fois-ci ne l'oublie pas https://docstore.mik.ua/orelly/perl4/mre/
Cette fois-ci ne l'oublie pas https://docstore.mik.ua/orelly/perl4/mre/
jonigood
Messages postés
476
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
6 juillet 2011
28
29 mai 2011 à 20:00
29 mai 2011 à 20:00
cool
thanks
thanks
29 mai 2011 à 10:47
Ta solution ne fonctionne pas
Le compteur ce met bien en route, par contre aucun changement dans le fich.txt ...
29 mai 2011 à 10:51
Normal, la syntaxe dans mon script ne fait qu'afficher le résultat sans modifier le fichier d'origine (fich.txt) par souci se sécurité et de test...
Pour que le changement soit effectif il suffit d'ajouter l'option "-i" (--in-place) à la commande sed ;-))
29 mai 2011 à 10:58
sa fonctionne, je suis gâté aujourd'hui :-)
merci
29 mai 2011 à 11:01
Petite précision : La regex s'applique uniquement au format de la ligne "Mon IP: xxx.xxx.xxx.xxx" du fichier "fich.txt".
Si le format diffère, il faudra adapter la regex en fonction.
29 mai 2011 à 11:20
Oui, mais comme j'étais en train de sleep quand j'ai écrit je ne me suis même pas rendu compte ;-)))