Bonjour,

J'ai un fichier de "log" comme ceci (obtenu grâce à Nmap):

----------------------
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 : 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 ))
Or, je modifie légèrement le fonctionnement de mon fichier de logs en ajoutant la date de chaque scans :

---------------------- 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.

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.