soucis avec AWK [Shell] - Shell/Batch - Programmation
Marsh Posté le 03-10-2012 à 20:43:28
Bonsoir !
Pour répondre à votre problématique, j'aurais l'approche suivante :
partir du fichier "filtré" et organiser la commande awk comme suit :
=> utiliser "/" comme séparateur, ce qui vous donnera les différentes valeurs dans les champs "éclatés" par awk
Pour chaque ligne, boucler sur tous les champs et regarder si celui-ci contient "NbSolutions="
Si oui, regarder ce qu'il y a après le signe "=" et comparer ...
Petite proposition de script awk (à mettre dans le fichier "script.awk" ) :
{
for (i=1;i<=NF;i++)
{
if (match($i,"NbSolutions=" ))
{
split($i, valeurs, "Solutions=" )
if (valeurs[2] > 100)
{
print $0
}
}
}
}
Et la ligne de commande associée :
cat p00_rfse_1_819230.log |grep NbSolutions |awk -F/ -f script.awk
Dans l'exemple que je vous donne, j'affiche la ligne dont le nombre de solutions est supérieur à 100, à vous de personnaliser le script !
Bon courage !
Marsh Posté le 03-10-2012 à 20:45:40
Merci Farian pour ton sympa message, je teste ça demain, bonne soirée à toi !
Marsh Posté le 04-10-2012 à 23:05:25
salut,
si NbSolutions est toujours le troisième champ
Code :
|
(find trouve les fichiers du 2 octobre 2012, et exécute dessus le code awk)
sinon, appliquer le script de Farian.
Marsh Posté le 03-10-2012 à 14:36:10
Bonjour à tous,
je dois créer un script avec une mission bien précise, chercher des occurrences dans des fichiers triés et remonter les lignes si une valeur de ces fichiers sont supérieurs à une valeur, disons 100
en vrac, le tri des fichier, ici je ne prends que les fichier du 02 octobre qui contiennent rfse
ls -lrt | grep "Oct 02" | grep rfse
-rw-r--r-- 1 ref ref 1946967 Oct 02 23:30 p00_rfse_1_819230.log
-rw-r--r-- 1 ref ref 2032774 Oct 02 23:30 p00_rfse_1_766080.log
-rw-r--r-- 1 ref ref 2067338 Oct 02 23:30 p00_rfse_1_1404954.log
-rw-r--r-- 1 ref ref 2005610 Oct 02 23:30 p00_rfse_1_1360052.log
-rw-r--r-- 1 ref ref 2039719 Oct 02 23:30 p00_rfse_1_1364210.log
-rw-r--r-- 1 ref ref 2001858 Oct 02 23:30 p00_rfse_1_1273940.log
-rw-r--r-- 1 ref ref 2009087 Oct 02 23:30 p00_rfse_1_1224786.log
-rw-r--r-- 1 ref ref 2153521 Oct 02 23:30 p00_rfse_1_1445924.log
-rw-r--r-- 1 ref ref 1942355 Oct 02 23:30 p00_rfse_1_1146936.log
-rw-r--r-- 1 ref ref 2000715 Oct 02 23:30 p00_rfse_1_1138894.log
-rw-r--r-- 1 ref ref 1845453 Oct 02 23:30 p00_rfse_1_1052842.log
-rw-r--r-- 1 ref ref 2043212 Oct 02 23:30 p00_rfse_1_811252.log
-rw-r--r-- 1 ref ref 2034320 Oct 02 23:30 p00_rfse_1_585748.log
-rw-r--r-- 1 ref ref 2003198 Oct 02 23:30 p00_rfse_1_1319106.log
-rw-r--r-- 1 ref ref 2007873 Oct 02 23:30 p00_rfse_1_1233100.log
-rw-r--r-- 1 ref ref 1957100 Oct 02 23:30 p00_rfse_1_1228886.log
-rw-r--r-- 1 ref ref 1999969 Oct 02 23:30 p00_rfse_1_1016006.log
-rw-r--r-- 1 ref ref 2025960 Oct 02 23:30 p00_rfse_1_848054.log
-rw-r--r-- 1 ref ref 379 Oct 02 23:30 p00_rfse_1-router_1392758.log
-rw-r--r-- 1 ref ref 11814 Oct 02 23:30 p00_rfse_1306744.log
-rw-r--r-- 1 ref ref 314 Oct 02 23:37 p00_rfse_1-router_794872.log
maintenant je parse un fichier (disons le p00_rfse_1_819230.log) et ne faire apparaitre que les lignes contenant NbSolutions
cat p00_rfse_1_819230.log | awk '/NbSolutions/'
@@@ref.6@@@ ->Backtracking route search : Time=417///NbSolutions=7
@@@ref.6 2012-10-02 23:25:50@@@ End of search engine request///Time=3993///NbSolutions=2
@@@ref.6 2012-10-02 23:26:43@@@ End of search engine request///Time=170///NbSolutions=2///CSP solutions
@@@ref.6@@@ ->Backtracking route search : Time=478///NbSolutions=4
@@@ref.6 2012-10-02 23:27:38@@@ End of search engine request///Time=6047///NbSolutions=2
@@@ref.6@@@ ->Backtracking route search : Time=322///NbSolutions=6
@@@ref.6 2012-10-02 23:28:39@@@ End of search engine request///Time=3492///NbSolutions=6
@@@ref.6 2012-10-02 23:29:33@@@ End of search engine request///Time=241///NbSolutions=6///CSP solutions
je cherche à isoler la valeur NbSolutions= puis de regarder si cette variable est supérieur à 100
et c'est que je sèche, si vous avez une piste je suis preneur, merci à vous
---------------
Mon topic - Mon Feed-Back