GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel de commande Linux/UNIX Awk avec exemples

Awk est un langage de script utilisé pour traiter ou analyser des fichiers texte. Ou nous pouvons dire que la commande awk est principalement utilisée pour regrouper des données en fonction d'une colonne ou d'un champ, ou d'un ensemble de colonnes. Il est principalement utilisé pour rapporter des données de manière utile. Il utilise également les blocs de début et de fin pour traiter les données.

AWK signifie "Aho, Weinberger et Kernighan"

Dans ce tutoriel, nous allons apprendre la commande awk avec des exemples pratiques.

Syntaxe de awk

# awk 'pattern {action}' fichier-entrée> fichier-sortie

Prenons un fichier d'entrée avec les données suivantes

$ cat  awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000

Maintenant, plongeons dans des exemples pratiques de la commande awk.

1) Imprimer toutes les lignes d'un fichier

Par défaut, awk imprime toutes les lignes d'un fichier, donc pour imprimer chaque ligne du fichier créé ci-dessus, utilisez la commande ci-dessous :

$ awk '{print;}' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000

Remarque : Dans la commande awk '{print;}' est utilisé pour imprimer tous les champs avec leurs valeurs.

2) N'imprimer que des champs spécifiques tels que 2e et 3e

Dans la commande awk, nous utilisons le symbole $ (dollar) suivi du numéro de champ pour imprimer les valeurs de champ. Dans l'exemple ci-dessous, nous imprimons le champ 2 (c'est-à-dire les marques) et le champ 3 (c'est-à-dire les marques maximales)

$ awk -F "," '{print $2, $3;}' awk_file
Marks Max Marks
200 1000
500 1000
1000
800 1000
600 1000
400 1000

Dans la commande ci-dessus, nous avons utilisé l'option  -F ","  qui spécifie que la virgule (,) est le séparateur de champ dans le fichier.

3) Imprimez les lignes qui correspondent au motif

Je veux imprimer les lignes qui contiennent le mot "Hari &Ram", lancez

$ awk '/Hari|Ram/' awk_file
Ram,200,1000
Hari,600,1000
Ram,400,1000

4) Comment trouver des valeurs uniques dans la première colonne du nom ?

Pour imprimer des valeurs uniques à partir de la première colonne, exécutez la commande ci-dessous awk

$ awk -F, '{a[$1];}END{for (i in a)print i;}' awk_file
Abharam
Hari
Name
Ghyansham
Ram
Shyam

5) Comment trouver la somme des données saisies dans une colonne particulière

Dans la commande awk, il est également possible d'effectuer une opération arithmétique basée sur la recherche, la syntaxe est indiquée ci-dessous

$ awk -F, ‘$1==”Item1″{x+=$2;}END{print x}’ awk_file

Dans l'exemple ci-dessous, nous recherchons Ram, puis nous ajoutons les valeurs du 2e champ pour le mot Ram.

$ awk -F, '$1=="Ram"{x+=$2;}END{print x}' awk_file
600

6) Comment trouver le total de tous les nombres dans une colonne

Dans la commande awk, nous pouvons également calculer la somme de tous les nombres dans une colonne d'un fichier. Dans l'exemple ci-dessous, nous calculons la somme de tous les nombres des 2e et 3e colonnes.

$ awk -F"," '{x+=$2}END{print x}' awk_file
3500
$ awk -F"," '{x+=$3}END{print x}' awk_file
5000

7) Comment trouver la somme des enregistrements de groupe individuels

Par exemple, si nous considérons la première colonne, nous pouvons faire la somme pour la première colonne en fonction des éléments

$ awk -F, '{a[$1]+=$2;}END{for(i in a)print i", "a[i];}' awk_file
Abharam, 800
Hari, 600
Name, 0
Ghyansham, 1000
Ram, 600
Shyam, 500

8) Trouvez la somme de toutes les entrées de colonnes spécifiques et ajoutez-la à la fin du fichier

Comme nous en avons déjà discuté, la commande awk peut faire la somme de tous les nombres d'une colonne, donc pour ajouter la somme de la colonne 2 et de la colonne 3 à la fin du fichier, exécutez

$ awk -F"," '{x+=$2;y+=$3;print}END{print "Total,"x,y}' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000
Total,3500 5000

9) Comment trouver le nombre d'entrées dans chaque colonne en fonction de la première colonne

$ awk -F, '{a[$1]++;}END{for (i in a)print i, a[i];}' awk_file
Abharam 1
Hari 1
Name 1
Ghyansham 1
Ram 2
Shyam 1

10) Comment imprimer uniquement le premier enregistrement de chaque groupe

Pour n'imprimer que le premier de chaque groupe, exécutez la commande ci-dessous awk

$ awk -F, '!a[$1]++' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000

AWK Commencer le bloc

La syntaxe du bloc BEGIN est

$ awk ‘BEGIN{awk initializing code}{actual AWK code}’   File-Name

Créons un fichier de données avec le contenu ci-dessous

11) Comment remplir les noms de chaque colonne avec leurs données correspondantes

$ awk 'BEGIN{print "Names\ttotal\tPPT\tDoc\txls"}{printf "%-s\t%d\t%d\t%d\t%d\n", $1,$2,$3,$4,$5}' datafile

12) Comment changer le séparateur de champs

Comme nous pouvons le voir, l'espace est le séparateur de champs dans le fichier de données, dans l'exemple ci-dessous, nous allons changer le séparateur de champs de l'espace à "|"

$ awk 'BEGIN{OFS="|"}{print $1,$2,$3,$4,$5}' datafile

C'est tout ce tutoriel, j'espère que vous l'avez trouvé instructif. Veuillez partager vos commentaires et vos questions dans la section des commentaires ci-dessous.


Linux
  1. Linux expand Tutoriel de commande pour les débutants (avec exemples)

  2. Tutoriel de commande de facteur Linux pour les débutants (avec exemples)

  3. Linux oui Tutoriel de commande pour les débutants (avec exemples)

  4. Tutoriel de commande Linux tac pour les débutants (avec exemples)

  5. Commande JQ sous Linux avec exemples

Tutoriel de commande de test Linux pour les débutants (avec exemples)

Tutoriel de commande Linux zforce avec exemples

Tutoriel de commande Linux tr pour les débutants (avec exemples)

15 Commande Linux ps avec exemples

Commande Linux awk avec 10 exemples

Tutoriel sur la commande de recherche Linux (avec exemples)