Bonjour j'ai un fichier de log verticale (ex:
------------------
ligne1
ligne2
ligne3
..
------------------
ligne 1
ligne 2
ligne 3
------------------
Je souhaiterai extraire ce qui se trouve entre les séparateurs mais je vous avoue que j'ai un peu de mal à faire mon script en shell ..
notamment mon ptit awk
A vos âmes charitables !!!
Merci d'avance ...
# Tu peux préciser ?
Posté par Pascal Terjan (site web personnel) . Évalué à 1.
Peut être :
awk 'BEGIN{IN=0}/------------------/{IN=!IN}!/------------------/{if(IN) print $0}' t
[^] # Re: Tu peux préciser ?
Posté par gnial . Évalué à 1.
1 --------------------
2 ligne
3 ligne
4 ligne
.....
23 --------------------
24 ligne
25 ligne
.....
et je veux recuperer la 1ere ligne (apres une ligne "------------------")
qui correspond à un etat
la 2eime ligne à la date
la 3eime ligne à l'heure
et de la 4eime ligne à la neime ligne (avant la prochaine ligne "-------------")
à des noms de fichiers
Je vais tester ta config awk
Merci
[^] # Re: Tu peux préciser ?
Posté par gnial . Évalué à 1.
Mysql .........
[^] # Re: Tu peux préciser ?
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
# essaie ça:
Posté par totof2000 . Évalué à -1.
[^] # Re: essaie ça:
Posté par totof2000 . Évalué à 0.
# Metttre en champs les lignes d'un fichier
Posté par gnial . Évalué à 1.
Pour facilitez à la rigueur il faudrait que je reussisse à mettre en ligne tout ce qui se trouve entre les lignes separatrice "--------------------"
Du coup je peux utiliser awk avec les $1,$2 jusqu'au $Nf
Ca semblerai plus simple !!
Le tout est de réussir à faire ca ..
[^] # Re: Metttre en champs les lignes d'un fichier
Posté par totof2000 . Évalué à 2.
FS="\n"
RS="------------------\n"
}
$0 != ""{
#printf(" Ligne %s\n",$0)
for (i=1;i<=NF;i++) {
printf "l %s: %s\n",i,$i
}
}' fichier
Cette fois ci je pense que c'est la bonne.
A noter que tu as un élément vide en $1 et $NF
[^] # Re: Metttre en champs les lignes d'un fichier
Posté par totof2000 . Évalué à 3.
awk 'BEGIN {
FS="\n"
RS="------------------"
}
$0 != ""{
#printf(" Ligne %s\n",$0)
for (i=1;i<=NF;i++) {
printf ("%s ",$i)
}
printf("\n")
}' fichier
[^] # Re: Metttre en champs les lignes d'un fichier
Posté par totof2000 . Évalué à 3.
Tu les initialise dans la section BEGIN.
[^] # Re: Metttre en champs les lignes d'un fichier
Posté par gnial . Évalué à 1.
Je te remercie , ca fait un truc pas mal !!!
Je vais pouvoir parser à la régulière !! (Avant décryptage de ton awk !!)
[^] # Re: Metttre en champs les lignes d'un fichier
Posté par gaaaaaAab . Évalué à 1.
Rien à rajouter sur awk, tout a déjà été dit. Par contre, si tu as la main sur le programme qui crache le log, le mieux, ça serait quand même de le faire tout logguer sur une seule ligne.
Les logs multilignes, c'est très joli pour l'utilisateur, mais c'est inexploitable. Priez pour ne jamais avoir à parser le retour des commandes net * de windows ... (en tout cas, des nt 4)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.