La commande awk permet de filtrer des données à partir d'un fichier ou d'un pipe. C'est un langage de programmation a elle tout seule qui permet une recherche de chaînes et l'exécution d'actions sur les lignes sélectionnées.
root@ubuntu:~# awk '{print $3}'
root@ubuntu:~# awk -F ',' '{print $1":"$2}'
root@ubuntu:~# awk -F '\t' '{print $3}'
root@ubuntu:~# awk -F":" '{print $6,$7}' /etc/passwd /root /bin/bash /usr/sbin /bin/sh /bin /bin/sh /dev /bin/sh
root@ubuntu:~# echo "a b c d e f" | awk '{for (i=NF; i>0; i--) {printf("%s ",$i)}}' f e d c b a root@ubuntu:~# root@ubuntu:~# echo "a b c d e f" | awk '{for (i=NF; i>0; i--) {printf("%s ",$i)} printf "\n"}' f e d c b a root@ubuntu:~#
root@ubuntu:~# ps ax |grep 'inetd' |awk '{print $1}' |xargs kill root@ubuntu:~# echo fichier.txt,Lundi,Janvier,5,ABCDEF |awk -F',' '{printf "%s %s %2s %s %s\n",$2,$3,$4,$5,$1}' Lundi Janvier 5 ABCDEF fichier.txt root@ubuntu:~# echo fichier.txt,Lundi,Janvier,26,ABCDEF |awk -F',' '{printf "%s %s %2s %s %s\n",$2,$3,$4,$5,$1}' Lundi Janvier 26 ABCDEF fichier.txt
root@ubuntu:~# cat fichier.awk BEGIN { print "Démarrage du programme" } { print "Pas de critères. Donc ce message s'affiche autant de fois qu'il y a d'enregistrement" } END { print "Fin du programme" } root@ubuntu:~# cat fichier.awk #! /usr/bin/awk -f BEGIN { print "Analyse du fichier /etc/passwd" FS=":" # Changement du séparateur de champ } { print "User : " $1 print "Home : " $6 print "" } END { print "Fin d'analyse du fichier /etc/passwd" } root@ubuntu:~# awk -f fichier.awk /etc/passwd Analyse du fichier /etc/passwd User : root Home : /root User : daemon Home : /usr/sbin User : bin Home : /bin User : sys Home : /dev User : sync Home : /bin User : games Home : /usr/games ... Fin d'analyse du fichier /etc/passwd root@ubuntu:~# cat fichier.awk #! /usr/bin/awk -f BEGIN { print "Affichage des 7 premières lignes du fichier" n = 7 } NR <= n { print NR, $0 } END { print "Fin" }