GNU/Linux >> Tutoriels Linux >  >> Ubuntu

10 exemples de commandes Awk impressionnants sous Linux

Awk est l'utilitaire le plus populaire développé à des fins d'extraction de données, de traitement de texte et, en outre, de création de rapports formatés. Il est beaucoup plus similaire à sed mais plus puissant que sed car sed a des limitations dans le traitement de texte. AWK n'a pas de signification particulière pour son nom car il est nommé en utilisant la première lettre de ses développeurs Alfred Aho, Peter J. Weinberger et Brian Kernighan.

Dans cet article, nous apprendrons 10 commandes awk géniales que vous devez connaître. J'ai créé et ajouté l'ensemble de données suivant dans student.txt à titre d'exemple. L'ensemble de données comporte 4 colonnes où le premier champ contient le prénom, le deuxième champ contient le deuxième nom, le troisième champ contient l'âge et le dernier contient la classe.

Impression d'un champ spécifique à l'aide d'une variable

Awk a de nombreuses variables prédéfinies qui ont leur objectif respectif. En utilisant cette commande, nous pouvons imprimer toutes les données de champ spécifiques en utilisant $x où x fait référence à la position de numérotation des champs.

$ awk '{print $1, $2}' student.txt

Variable DEBUT

La variable BEGIN est utilisée pour ajouter un en-tête ou un titre aux données résultantes lors de l'exécution du script avant de traiter les données. Il aide à l'indexation lors du formatage des tables de données. Dans l'exemple suivant, j'ai imprimé du texte sous forme d'indexation, puis j'ai imprimé tous les noms d'étudiants.

$ awk 'BEGIN {print "Students : "} {print $1}' student.txt

Variable FIN

END est tout le contraire de BEGIN car il exécute le script après le traitement des données. Il peut être utilisé pour le rapport final de l'ensemble de données. Dans l'exemple suivant, j'ai imprimé tout l'âge de l'étudiant, puis j'ai imprimé quelques messages de fin.

$ awk '{print $3}

END {

print "These are student age "

} ' student.txt

Séparateur de fichiers

L'espace et l'espace de tabulation sont des séparateurs par défaut de la commande awk, mais nous pouvons séparer le texte en fonction d'autres séparateurs tels que la virgule, la barre oblique, etc. Pour ce faire, nous devons ajouter l'indicateur -F à la commande et fournir le séparateur entre guillemets .

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

Exécuter un script à partir d'un fichier

Nous pouvons également exécuter le script awk à partir du fichier, ce qui nous permet de créer des rapports efficacement. Pour cela, vous devez créer le fichier puis écrire le script et l'exécuter à l'aide de la commande awk. Pour la démo, vous pouvez créer un nom de fichier demo_script et copier-coller le script suivant.

$ vi demo_script

{

sum+=$3

}

END {

print("Sum of all student age is", sum)

}

La commande awk fournit un indicateur -f pour exécuter le script à partir du fichier.

$ awk -f demo_script student.txt

Utiliser plusieurs scripts

Nous pouvons exécuter les multiples scripts en utilisant le point-virgule. Dans l'exemple suivant, j'ai imprimé du texte puis dirigé la sortie, avec awk et j'ai imprimé le résultat modifié.

$ echo "Hello, Dr. John" | awk '{$3="George"; print $0}'

Compter le nombre de lignes

Nous pouvons attribuer le numéro au rapport à l'aide de la variable NR qui est une variable intégrée awk qui imprime automatiquement le numéro de ligne dans le rapport.

$ awk '{print NR "\t" $0}' student.txt

Compter le nombre de champs

Parfois, lors de la préparation des données, nous avons oublié d'ajouter des données dans la colonne spécifique, ce qui peut entraîner des irrégularités dans le rapport. Nous pouvons compter les champs à l'aide de la variable NF, ce qui facilite la révision et l'organisation des rapports.

$ awk '{print NR".",$0 "\n Count=" NF}' student.txt

Si condition

Nous pouvons utiliser if condition pour préparer un rapport conditionnel. Dans l'exemple suivant, nous imprimons tous les étudiants dont l'âge est inférieur à 16 ans

$ awk '

BEGIN{

print "Student whose age are under 16 are:"

}

{

if($3<16){

print $1

}

}' student.txt

Boucle For

Dans l'exemple suivant, nous utilisons la boucle for pour imprimer successivement 5 nombres aléatoires. Pour générer des nombres aléatoires, nous utiliserons la fonction rand() qui est une fonction intégrée au système. Cette fonction générera un nombre aléatoire en décimal, nous devons donc multiplier 100 pour obtenir des nombres aléatoires de 1 à 100.

$ awk 'BEGIN {

for (i = 1; i <= 5; i++){

print int(100 * rand())

}

}'

Conclusion

Dans cet article, nous avons découvert les 10 commandes et scripts awk géniaux. J'espère que cet article vous plaira.


Ubuntu
  1. 7 Exemples de commandes Linux df

  2. Exemples de commandes sa sous Linux

  3. ac Exemples de commandes sous Linux

  4. Exemples de commandes df sous Linux

  5. du Exemples de commandes sous Linux

10 exemples de commandes iftop sous Linux

20 exemples de commandes Nmap impressionnants sous Linux

Commande Linux awk avec 10 exemples

Exemples de commandes Linux Touch

Commande IP Linux avec exemples

Exemples de commandes id sous Linux