Bonjour,
J'aurais besoin de vos conseils avisés pour tronquer des lignes de logs, à partir d'une balise identifiée MA_BALISE.
Une ligne de log est composée ainsi:
2009-05-14 02:01 14/05 02:00:15 [ERROR] es.RechercheBaseAccessBean - MA_BALISE MON_CODE - - - - - - MA_BALISE Mon message d'erreur sur plusieurs champs.
Je voudrais garder tout ce qui se trouve après la première balise MA_BALISE, et supprimer ce qui se trouve avant.
La problématique, c'est que le nombre de champs avant la balise peut être variable. Mon seul vrai repère est cette balise, enfin, sa première occurence.
Je pense que awk ou sed sont la solution, mais je n'arrive pas à formuler les commandes permettant de le faire. Ca fait un moment que j'essaie, et je commence à désespérer un peu.
Quelqu'un aurait une idée ?
Merci
# man awk
Posté par s[e]th & h[o]lth (site web personnel) . Évalué à 2.
mawk - pattern scanning and text processing language
SYNOPSIS
mawk [-W option] [-F value] [-v var=value] [--] ’program text’ [file ...]
mawk [-W option] [-F value] [-v var=value] [-f program-file] [--] [file ...]
DESCRIPTION
mawk is an interpreter for the AWK Programming Language. The AWK language is useful for manipulation of data files, text retrieval and processing, and for prototyp‐
ing and experimenting with algorithms. mawk is a new awk meaning it implements the AWK language as defined in Aho, Kernighan and Weinberger, The AWK Programming
Language, Addison-Wesley Publishing, 1988. (Hereafter referred to as the AWK book.) mawk conforms to the Posix 1003.2 (draft 11.3) definition of the AWK language
which contains a few features not described in the AWK book, and mawk provides a small number of extensions.
An AWK program is a sequence of pattern {action} pairs and function definitions. Short programs are entered on the command line usually enclosed in ’ ’ to avoid
shell interpretation. Longer programs can be read in from a file with the -f option. Data input is read from the list of files on the command line or from stan‐
dard input when the list is empty. The input is broken into records as determined by the record separator variable, RS. Initially, RS = "\n" and records are syn‐
onymous with lines. Each record is compared against each pattern and if it matches, the program text for {action} is executed.
OPTIONS
-F value sets the field separator, FS, to value.
[^] # sinon avec sed
Posté par s[e]th & h[o]lth (site web personnel) . Évalué à 2.
[^] # Re: sinon avec sed
Posté par s[e]th & h[o]lth (site web personnel) . Évalué à 2.
sed 's,^.*MA_BALISE_OUVRANTE\(.*\)MA_BALISE_FERMANTE.*$,\1,'
L'avantage de sed étant que tu peux le faire en une commande si la balise ouvrante diffère de la balise fermante.
[^] # Re: man awk
Posté par kaktus666 . Évalué à 0.
# simple
Posté par tipmeabout . Évalué à 1.
ça devrait être bon comme ça
[^] # Re: simple
Posté par tipmeabout . Évalué à 1.
$ echo "dfhsdh qsbhbd rzee z ezr ez te t qs x f sdggtrt- ey \n \rMA_BALISE texte super important que je veux consever MA_BALISE\n fd er eyt tr ds qs zsgdf hgeth ety ret hg r h s qwdgrtjht yj y" | awk -FMA_BALISE '{ print $2 }'
texte super important que je veux consever
Voilà, c'est testé
ps: toujours le problème de double quote traduit par "
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.