Awk en une ligne

Anne awk

J’ai plutôt l’habitude d’utiliser awk pour écrire des scripts, mais on peut aussi l’utiliser en ligne de commande à la place de sed lorsque c’est plus pratique.

Plein d’exemples :

Ma sélection :

  • pour afficher toutes les lignes comprises entre deux lignes identifiées par des expressions régulières :

      $ awk '/ça commence là/, /c'est la fin/'
    
  • pour afficher les lignes où un certain champ ne correspond pas à une certaine expression régulière :

      $ awk '$3 !~ "/^abc/" # le champ 3 ne commence pas par la chaîne "abc"
    
  • supprimer les lignes identiques (sans tri contrairement à uniq) :

      $ awk '!a[$0]++'
    

    et en version moins cryptique, mais plus verbeuse, ça donne :

      $ awk '!($0 in a) { a[$0]; print }'
    
  • pour joindre les lignes qui terminent par un backslash :

      $ awk '{if (sub(/\\$/,"")) printf "%s", $0; else print $0}'
    

Voir aussi :