[awk] parser /etc/services
Par flo|va-nu-pied le mardi, 4 août 2009, 04:34 - bash - Lien permanent
Je cherchais un moyen de mettre en forme un script qui interrogeais mon fichier /etc/services voila donc une petite ébauche.
Ce script utilise la commande awk d'une façon primaire mais introduit une syntaxe relativement pratique au quotidien.
on distingue, dans notre cas, deux parties. La première délimitée par des // contient une occurrence que nous cherchons. il est à noter que ce champ supporte les expressions régulières et est donc hautement configurable en fonction de votre besoin.
La deuxième partie de la commande permet de mettre en forme la sortie de la commande.
Maintenant que nous avons vu un peu comment était constitué la sytanxe de la commande awk passons au script.
#!/bin/sh # emplacement du fichier services FILE="/etc/services" # numéro du port ou nom du service PORTNUMBER="$1" awk '/\t'$1'\/|^'$1'/{print "service = "$1; print "port/type = "$2;$1 = "";$2 = "";print "Description = "$0;print ""}' $FILE
me reste a régler quelques petits truc mais ça fonctionne plutôt bien :
flopc sh # ./services_parser.sh ssh service = ssh port/type = 22/tcp Description = # SSH Remote Login Protocol service = ssh port/type = 22/udp Description = flopc sh # ./services_parser.sh 21 service = ftp port/type = 21/tcp Description = # File Transfer [Control] service = ftp port/type = 21/udp Description = fsp fspd
Il est bien sûr évident que ceci ne constitue qu'une infime partie de la puissance d'awk qui est à lui seul un véritable langage de développement. En espérant que ce petit aperçu vous aura donné envie d'approfondir la connaissance de ce merveilleux outil.
liens connexes:
http://www.linux-pour-lesnuls.com/gawk.php
http://www.waterproof.fr/products/PHPEdit/manual/fr/module.FindRegExp.html
http://www.wagoneers.com/UNIX/AWK/awk.html
http://www.info.univ-angers.fr/aides/tutawk.html
Derniers commentaires