Awk est un langage de script utilisé pour manipuler des données et générer des rapports.Le langage de programmation de commande awk ne nécessite aucune compilation et permet à l’utilisateur d’utiliser des variables, des fonctions numériques, des fonctions de chaîne et des opérateurs logiques.
Awk est un utilitaire qui permet à un programmeur d’écrire des programmes minuscules mais efficaces sous la forme d’instructions qui définissent des modèles de texte à rechercher dans chaque ligne d’un document et l’action à effectuer lorsqu’une correspondance est trouvée dans une ligne., Awk est principalement utilisé pour la numérisation et le traitement des motifs. Il recherche un ou plusieurs fichiers pour voir s’ils contiennent des lignes qui correspondent aux modèles spécifiés, puis effectue les actions associées.
Awk est abrégé à partir des noms des développeurs – Aho, Weinberger et Kernighan.
Que pouvons-nous faire avec AWK ?
1. Opérations AWK:
(a) Analyse un fichier ligne par ligne
(b) divise chaque ligne d’entrée en champs
(c) compare la ligne/les champs d’entrée au motif
(d) effectue une ou plusieurs actions sur les lignes correspondantes
2., Utile Pour:
(a) Transformer des fichiers de données
(b) Produire des rapports formatés
3. Constructions de programmation:
(a) formater les lignes de sortie
(b) opérations arithmétiques et de chaîne
(c) conditionnelles et boucles
syntaxe:
awk options 'selection _criteria {action }' input-file > output-file
Options:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument.-F fs : Use fs for the input field separator
exemples de commandes
exemple:
considérez ce qui suit fichier texte comme fichier d’entrée pour tous les cas ci-dessous.
$cat > employee.txt
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000
1. Comportement par défaut de Awk: par défaut, Awk imprime chaque ligne de données du fichier spécifié.,
$ awk '{print}' employee.txt
Résultat:
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000
Dans l’exemple ci-dessus, aucun motif n’est donné. Les actions sont donc applicables à toutes les lignes. Action print sans aucun argument imprime la ligne entière par défaut, donc il imprime toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt
Résultat:
ajay manager account 45000varun manager sales 50000amit manager account 47000
Dans l’exemple ci-dessus, la commande awk imprime toute la ligne qui correspond à la « manager ».
3., Fractionnement D’une ligne en champs : pour chaque enregistrement, c’est-à-dire ligne, la commande awk divise l’enregistrement délimité par un caractère d’espace par défaut et le stocke dans les variables n N. Si la ligne a 4 mots, elle sera stockée dans $1, 2 2, respectively 3 et respectively 4 respectivement. De plus, $0 représente toute la ligne.
$ awk '{print $1,$4}' employee.txt
Résultat:
ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000
Dans l’exemple ci-dessus, 1 $et $4 représente le Nom et le Salaire des champs respectivement.,
Variables intégrées dans Awk
Les variables intégrées D’Awk incluent les variables de Champ—$1, $2, $3, et ainsi de suite ($0 est la ligne entière) — qui cassent une ligne de texte en mots ou morceaux individuels appelés champs.
NR: la commande NR conserve un décompte actuel du nombre d’enregistrements d’entrée. Rappelez-vous que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions pattern/action une fois pour chaque enregistrement dans un fichier.
NF: la commande NF conserve un décompte du nombre de champs dans l’enregistrement d’entrée courant.,
FS: la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne d’entrée. La valeur par défaut est « espace blanc », ce qui signifie espace et tabulations. FS peut être réaffecté à un autre caractère (généralement dans BEGIN) pour changer le séparateur de champ.
RS: la commande RS stocke le caractère séparateur d’enregistrement en cours. Étant donné que, par défaut, une ligne d’entrée est l’enregistrement d’entrée, le caractère séparateur d’enregistrement par défaut est un retour à la ligne.
OFS: la commande OFS stocke le séparateur de champ de sortie, qui sépare les champs lorsque Awk les imprime. La valeur par défaut est un espace vide., Chaque fois que print a plusieurs paramètres séparés par des virgules, il imprimera la valeur DE OFS entre chaque paramètre.
ORS: la commande ORS stocke le séparateur d’enregistrement de sortie, qui sépare les lignes de sortie lorsque Awk les imprime. La valeur par défaut est un caractère de retour à la ligne. print Affiche automatiquement le contenu des ORS à la fin de tout ce qu’il est donné à imprimer.,
Exemples:
l’Utilisation de N variables intégrées (Afficher le Numéro de Ligne)
$ awk '{print NR,$0}' employee.txt
Résultat:
1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000
Dans l’exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de la ligne.
utilisation des variables intégrées NF (afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt
Sortie:
ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000
dans l’exemple ci-dessus $1 représente le nom et N NF représente le salaire. Nous pouvons obtenir le salaire en utilisant N NF, où N NF représente le dernier champ.,
une Autre utilisation de N variables intégrées (Ligne d’Affichage De 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt
Résultat:
3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000
Exemples
Pour le fichier texte:
$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3
1) Pour imprimer le premier élément avec le numéro de ligne(NR), séparés par un ” – » à partir de chaque ligne dans geeksforgeeks.txt:
$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen
2) Pour revenir de la deuxième ligne/élément de geeksforgeeks.,hne ligne présente dans le fichier:
$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13
5) Pour compter les lignes dans un fichier:
$ awk 'END { print NR }' geeksforgeeks.txt
3
6) lignes d’Impression avec plus de 10 caractères:
$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3
7) Pour trouver ou de vérifier qu’une chaîne spécifique de la colonne:
$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt
8) Pour imprimer des carrés des premiers nombres de 1 à n-dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36
Cet article est apporté par Anshika Goyal et Praveen Negi., Si vous aimez GeeksforGeeks et souhaitez contribuer, vous pouvez également écrire un article en utilisant contribute.geeksforgeeks.org ou envoyez votre article à [email protected]. voir votre article apparaissant sur la page principale GeeksforGeeks et aider les autres Geeks.