• [^] # Re: awk vs cut

    Posté par . En réponse au journal taptempo.awk : une approche plus unix ?. Évalué à 4.

    Hum... Je ne sais pas ce que tu entends par sobriété. awk s'inscrit dans la veine des grep/cut/sed. Lui donner des centaines de Mio de données ne lui fais pas particulièrement peur.

    D'un point de vue performance, selon les cas grep+cut peuvent être plus performance grâce pipelining (mais si ton pipeline as plus d'étapes que tu n'a de cœurs tu ne gagne rien). Sur des exécutions rapide mais fréquentes le fait d'utiliser un seul processus va par contre te faire gagner du temps. Enfin awk permet d'exprimer des choses autrement.

    Exprimer ce que j'ai fais en awk avec grep+cut ça donne :

    xev | grep -A1 "KeyPress event" | grep " root" | cut -c31-36

    et ça ne gère pas un time dont la taille serait variable (il faudrait faire un cut par field puis retirer les dernier caractère).
    Avec grep+sed ça marche mieux :

    xev | sed -n '/KeyPress event/{n;s/ root.* time \([0-9]*\), .*/1円/p}'

    Mais bon on perds en lisibilité. La majeur partie du temps je me sert d'awk pour extraire des données depuis un ps, lsof, etc et je trouve awk beaucoup plus pratique pour ça.

    Je n'ai personnellement jamais mis en défaut gred, sed, cut ou awk (et pourtant j'aimerais bien pour avoir l'occasion de jouer avec perl).