Forum Programmation.autre AWK: tronquer une ligne

Posté par  .
Étiquettes : aucune
-1
15
mai
2009
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  (site web personnel) . Évalué à 2.

    NAME
    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.
  • # simple

    Posté par  . Évalué à 1.

    awk '/MA_BALISE/,/MA_BALISE/ {print $0}'

    ça devrait être bon comme ça
    • [^] # Re: simple

      Posté par  . Évalué à 1.

      arrf j'ai dis n'importe quoi sans même tester

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