cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu
đŸ˜€ Ce billet a Ă©tĂ© Ă©ditĂ© le : 2022-11-30

awk est un langage de traitement de lignes, disponible sous la forme d'une commande portant le mĂȘme nom sur la plupart des systĂšmes. awk est principalement utilisĂ© pour la manipulation de fichiers textuels pour des opĂ©rations de recherches, de remplacement et de transformations complexes.

Cependant awk est souvent sous exploitĂ© et c’est un de ces usages simpliste que je vous prĂ©sente ici, puisqu’il s’agit simplement d’extraire la Ă©niĂšme colonne d’un flux.


ඏ

La commande « awk »

La syntaxe générale d'awt est la suivante:

awk [POSIX or GNU style options] -f progfile [--] file 

awk [POSIX or GNU style options] [--] 'program' file 


par dĂ©faut awt lit l’entrĂ©e standard Ă©crit sur la sortie standard.

Nous utiliserons ici la seconde solution, qui permet de mettre le programme awt directement dans la ligne de commande.

Le programme sera exécuté pour chaque ligne du flux, il doit commencer par { et finir } et pour le problÚme que nous cherchons à résoudre il se limitera à la fonction print et comme paramÚtre $ suivi du numéro du champ.

echo 'champ1   champ2   champ3' | awk '{print $2}'

A la diffĂ©rence de la commande cut, avec awk il peut y avoir autant d’espace (caractĂšres blancs) pour sĂ©parer les champs.

echo -e 'ligne1champ1   ligne1champ2   ligne1champ3\nligne2champ1 ligne2champ2 ligne2champ3\nligne3champ1        ligne3champ2        ligne3champ3' | awk '{print $2}'

awt est souvent utilisée avec la commande xargs, en particulier pour supprimer massivement des fichiers. Je vous propose un exemple moins risqué et qui permet de bien comprendre le fonctionnement de xargs.

echo -e 'ligne1champ1   ligne1champ2   ligne1champ3\nligne2champ1 ligne2champ2 ligne2champ3\nligne3champ1        ligne3champ2        ligne3champ3' | awk '{print $2}' | xargs echo

La commande awk dans l’exemple ci-dessous, retourne :

ligne1champ2
ligne2champ2
ligne3champ2

ඏ

La commande « xarg »

Pour les traitements vu ci-dessus, la commande xarg peut Ă©galement faire le travail.

La séquence xargs echo récupérera toutes les valeurs en entrées et finalement exécutera le code suivant :

echo ligne1champ2 ligne2champ2 ligne3champ2

Pour vous aider Ă  mettre au point vos scriptes le paramĂštre --verbose peut ĂȘtre ajoutĂ© Ă  la commande xargs :

echo -e 'il Ă©tait une fois
\n
une belle histoire
\n
ils divorcĂšrent, oubliant les enfants
' | xargs --verbose printf "-> %s ←\n"

Qui affichera vers la sortie standard :

-> il <-
-> Ă©tait <-
-> une <-
-> fois
 <-
-> 
une <-
-> belle <-
-> histoire
 <-
-> 
ils <-
-> divorcĂšrent, <-
-> oubliant <-
-> les <-
-> enfants
 <-

Et vers la sortie d’erreur :

printf '-> %s <-\n' il Ă©tait une fois
 
une belle histoire
 
ils divorcĂšrent, oubliant les enfants


ඏ

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog