Bonjour,
J'ai un fichier de "log" comme ceci (obtenu grâce à Nmap):
Il contient les résultats de chaque scans : les adresses IP trouvées, et pour chacune, les ports ouverts.----------------------
127.0.0.1
22
68
----------------------
127.0.0.1
22
25
587
68
----------------------
127.0.0.1
25
587
68
Chaque scan est séparé par "----------------------" (22 tirets).
Pour exploiter ce fichier, je ne veux récupérer que le dernier "bloc".
Je le fais de cette manière :
Or, je modifie légèrement le fonctionnement de mon fichier de logs en ajoutant la date de chaque scans :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 lecture_bloc(){ awk 'BEGIN { RS="" FS="^----------------------"} {print $NF} ' $FICHIER_LOG # on découpe le fichier suivant les pointillés, et on prend le dernier bloc } tableau=($(lecture_bloc ))
Le problème est que quand je lance maintenant la lecture du bloc, je récupère dans les premières cases de mon tableau, la date et l'heure.---------------------- 09/08/2013 10h12
127.0.0.1
25
587
68
---------------------- 10/08/2013 15h45
127.0.0.1
22
25
587
68
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo ${tableau[*]}Y aurait-t-il une solution pour modifier la variable "FS" de AWK et ainsi lire toute la ligne au lieu d'uniquement le motif indiqué ?10/08/2013 15h45 127.0.0.1 22 25 587 68
Quelque chose comme ça :
Je souhaite évidement éviter de faire un "unset" des 2 premières cases de mon tableau !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 lecture_bloc(){ awk 'BEGIN { RS="" FS="^----------------------"} {print $NF} ' $FICHIER_LOG }
Merci.
Partager