next up previous contents Next:  Calculs avec bc. Up: Scripts utiles et commandes. Previous:  Recherche et remplacement récursifs.   Table des matières  

21.7.7  cut et awk - manipulation des champs de fichiers-textes.

La commande cut est utilisée pour isoler un des champs présents dans certains fichiers; les deux commandes qui suivent effectuent le même travail sur le fichier /etc/passwd:

cut -d: -f1 /etc/passwd

cat /etc/passwd | cut -d: f1 


Le programme awk interprète le langage de programmation complet appelé AWK. Un des usages d'awk consiste à extraire un champ dans un fichier. Cette commande est plus flexible que cut (la commande qui suit a le même effet que les deux qui précèdent):

cat /etc/passwd | awk -F : '{print $1}' 


Cette flexibilité se manifeste lorsque des espaces séparent les champs comme dans le premier exemple qui suit et qui permet d'isoler les 6, 7 et 8 $^{\textrm{èmes}}$ champs de ce que retourne la commande ls -al (on obtient la date et l'heure):

ls -al | awk '{print $6 "" $7 "" $8}' 
ls -al | awk '{print $5 " octets"}' 

La dernière commande isole la taille des fichiers et répertoires (suivie du terme ``octets'').

Vous pouvez obtenir les adresses IP non-locales à l'aide de la commande:

ifconfig | grep 'inet addr:' | fgrep -v '127.0.0.'| cut -d: -f2 \ 
                                    | cut -d' 'f1 


Inversez l'ordre d'une adresse IP avec:

echo 192.168.2.3 | awk -F . '{print $4 "." $3 "." $2 "." $1}' 


Affichez tous les noms d'utilisateurs communs (c'est-à-dire le nom des utilisateurs ayant une valeur d'UserID supérieure à 499 sur RedHat et 999 sur Debian):

awk -F: '$3 >= 500 {print $1}' /etc/passwd 
( awk -F: '$3 >= 1000 {print $1}' /etc/passwd ) 


next up previous contents Next:  Calculs avec bc. Up: Scripts utiles et commandes. Previous:  Recherche et remplacement récursifs.   Table des matières  
1-01-2006