Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.autre

Programmation.autre : awk : selection en dehors d'une intervalle

Posté par Étienne Bersac (Jabber id, page perso, ) le 03 décembre 2004
Bonjour à tous, j'utilise gawk. Je cherche à supprimer les commentaires /* */ d'un fichier. Pourtant, impossible d'inverse un masque intervalle :
!(/\/\*/, /\*\//) {
 print $0
}
La réponse :
!(/\/\*/, /\*\//) {
         ^ syntax error
Je ne comprend pas, mais alors absolument pas ! SVP, expliquer moi ! Merci :)

--
E Ultreïa !
> Lire le message (7 commentaires, moyenne: 2,1).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Et le man?

Posté par totof2000 () le 03/12/2004 à 14:56. (lien). Évalué à 3.

D'après http://www.delafond.org/traducmanfr/man/man1/gawk.1.html(...) :

Les motifs AWK peuvent prendre une des formes suivantes :

BEGIN
END
/expression rationnelle/
expression relationnelle
motif && motif
motif || motif
motif ? motif : motif
(motif)
! motif
motif1, motif2

( ... )

La forme motif1, motif2 d'une expression est appelée un motif intervalle. Il correspond à tous les enregistrements d'entrée dont le début correspond à motif1, et continue jusqu'à ce qu'un enregistrement corresponde à motif2 inclusivement. Il ne se combine avec aucun autre type d'expression de motif.

  • [^]Re: Et le man?

    Posté par Étienne Bersac (Jabber id, page perso, ) le 04/12/2004 à 12:45. (lien). Évalué à 2.

    Merci, mais j'ai le man en anglais, j'avais mal compris ce truc.

    --
    E Ultreïa !

Et ca?

Posté par totof2000 () le 03/12/2004 à 15:03. (lien). Évalué à 3.

$ more toto.dat
qzrgtqgzgf
qzegqgqrzgqzegfazgrze
qazegfqz
/* etzrazge */
/* azergqazegqazaz
gaghreqazrgag */

$ awk ' /\/\*/, /\*\// {flag=1} { if (flag!=1) { print $0}}' toto.dat
qzrgtqgzgf
qzegqgqrzgqzegfazgrze
qazegfqz

  • [^]Re: Et ca? - correction

    Posté par totof2000 () le 03/12/2004 à 15:42. (lien). Évalué à 2.

    $ more toto.dat
    qzrgtqgzgf
    qzegqgqrzgqzegfazgrze
    qazegfqz
    /* etzrazge */
    /* azergqazegqazaz
    gaghreqazrgag */
    sdfqdfqf
    qzgqzrgergqzrgazerg


    $ awk ' /\/\*/, /\*\// {flag=1} { if (flag!=1) {
    print $0
    }
    else {
    flag=0
    }
    }' toto.dat
    qzrgtqgzgf
    qzegqgqrzgqzegfazgrze
    qazegfqz
    sdfqdfqf
    qzgqzrgergqzrgazerg


    La précédente version ne marchait pas exactement comme prévu (n'affiche pas les lignes après le premier bloc de commentaire)

pourquoi pas sed

Posté par toph () le 03/12/2004 à 15:56. (lien). Évalué à 1.

sed est a mon avis le bon outil pour modifier du texte.

pour le script regarde la : http://www.zazzybob.com/bin/remcoms.sed.html(...)



en prime un cours http://www.grymoire.com/Unix/Sed.html(...) plutot bien fait.

  • [^]Re: pourquoi pas sed

    Posté par totof2000 () le 03/12/2004 à 16:09. (lien). Évalué à 2.

    sed est a mon avis le bon outil pour modifier du texte.

    mon avis: sed est a mon avis un bon outil pour modifier du texte. Tout dépend de la modification à faire. Dans certains cas, awk sera beaucoup mieux adapté, dans d'autres cas ce sera sed, ou dans d'autres, ça ne fait pas de différence. PAr exemple il vaut mieux faire un seul awk (quand c'est possible) plutot que de faire un sed | awk.

  • [^]Re: pourquoi pas sed

    Posté par Étienne Bersac (Jabber id, page perso, ) le 04/12/2004 à 12:46. (lien). Évalué à 2.

    super, je l'améliore pour qu'il supprime l'indenation et c'est bon :)

    Merci !!!

    --
    E Ultreïa !

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.autre