Utilisation d'une expression régulière dans un AWK
Bonjour,
J'ai un fichier de "log" comme ceci (obtenu grâce à Nmap):
Citation:
----------------------
127.0.0.1
22
68
----------------------
127.0.0.1
22
25
587
68
----------------------
127.0.0.1
25
587
68
Il contient les résultats de chaque scans : les adresses IP trouvées, et pour chacune, les ports ouverts.
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 :
Code:
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 )) |
Or, je modifie légèrement le fonctionnement de mon fichier de logs en ajoutant la date de chaque scans :
Citation:
---------------------- 09/08/2013 10h12
127.0.0.1
25
587
68
---------------------- 10/08/2013 15h45
127.0.0.1
22
25
587
68
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.
Citation:
10/08/2013 15h45 127.0.0.1 22 25 587 68
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é ?
Quelque chose comme ça :
Code:
1 2 3 4 5
| lecture_bloc(){
awk 'BEGIN { RS=""
FS="^----------------------"}
{print $NF} ' $FICHIER_LOG
} |
Je souhaite évidement éviter de faire un "unset" des 2 premières cases de mon tableau !
Merci.