Supprimer des lignes du fichier perl
Résolu
rimrita
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour,
je veux un script en perl qui supprime les lignes du fichier log qui ont un status <> sent,
le fichier est structuré comme ci
je veux un script en perl qui supprime les lignes du fichier log qui ont un status <> sent,
le fichier est structuré comme ci
Mar 2 04:18:32 smtp postfix/smtp[****]: 1****.***.***.***: to=<****@****>, relay=1****.***.***.***[1****.***.***.***]:25, delay=****, delays=******, dsn=4.1.2, status=deferred (host ****.****[1****.***.***.***] said: 55 1 <.1.2*****@****>: Recipient address rejected: Domain not found (in reply to RCPT TO command))
Mar 2 05:19:06 s p/cleanup[****]: 0: message-id=<****@nnnn>
Mar 2 04:18:32 smtp postfix/smtp[****]: 1****.***.***.***: to=<****@****>, relay=1****.***.***.***[1****.***.***.***]:25, delay=****, delays=******, dsn=4.1.2, status=deferred (host ****.****[1****.***.***.***] said: 55 1 <.1.2*****@****>: Recipient address rejected: Domain not found (in reply to RCPT TO command))
Mar 2 05:19:06 s p/cleanup[****]: 0: message-id=<****@nnnn>
Mar 2 04:18:32 smtp po/smtp[****]: 1****.***.***.***: to=<****@****>, relay=1****.***.***.***[1****.***.***.***]:25, delay=****, delays=******, dsn=4.1.2, status=deferred (host ****.****[1****.***.***.***] said: 55 1 <.1.2*****@****>: Recipient address rejected: Domain not found (in reply to RCPT TO command))
Mar 2 05:19:06 s p/cleanup[****]: 0: message-id=<****@nnnn>
Mar 2 04:18:32 smtp po/smtp[****]: 1****.***.***.***: to=<****@****>, relay=1****.***.***.***[1****.***.***.***]:25, delay=****, delays=******, dsn=4.1.2, status=sens (host ****.****[1****.***.***.***] said: 1 <.1.2*****@****>: Recipient address rejected: Domain not found (in reply to RCPT TO command))
A voir également:
- Supprimer des lignes du fichier perl
- Supprimer rond bleu whatsapp - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier impossible à supprimer - Guide
- Fichier rar - Guide
4 réponses
Bonjour,
La dernière ligne indique "status=sens" et non pas "status=sent" et ce qui suit indique visiblement une erreur. Tu es sûre que les lignes "sent" se présentent comme cela ?
Dal
La dernière ligne indique "status=sens" et non pas "status=sent" et ce qui suit indique visiblement une erreur. Tu es sûre que les lignes "sent" se présentent comme cela ?
Dal
voila une ligne qui contient sent correctement
Mar 2 05:14:11 smtp p/smtp[***]: ****: to=<***@****>, relay=***.***.**.**[***.***.**.***]:25, delay=0.15, delays=./0.0/0./0.0, dsn=0.0.0, status=sent (**** *.0.0 Ok: queued as *******)
Donc, le plus simple est de faire un grep avec une négation de la regexp matchant une ligne correcte status=sent
Quelque chose comme cela :
Dal
Quelque chose comme cela :
#!/usr/bin/perl use strict; use warnings; open LIRE,"fichier_test.txt" or die "E/S : $!\n"; my @tmp = <LIRE>; my @log = grep {!/.*status=sent.*Ok: queued as /} @tmp; print @log;
Dal