GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux gawk avec exemples

Présentation

Le gawk La commande est la version GNU de awk. Gawk est un puissant outil de traitement de texte et de manipulation de données doté de nombreuses fonctionnalités et d'utilisations pratiques.

Ce guide vous apprendra à utiliser Linux gawk commande avec des exemples.

Prérequis

  • Un système exécutant Linux.
  • Accès au terminal.
  • Un fichier texte. Ce tutoriel utilise le fichier people à titre d'exemple.

Gawk Linux Command Syntaxe

Le gawk de base la syntaxe ressemble à ceci :

gawk [options] [actions/filters] input_file

La commande ne peut pas être exécutée sans aucun argument. Les options ne sont pas obligatoires, mais pour gawk pour produire une sortie, au moins une action doit être affectée. Les actions et les filtres sont différentes sous-commandes et critères de sélection qui activent gawk pour manipuler les données du fichier d'entrée.

Remarque  :Encadrez les options et les actions entre guillemets simples.

Options d'émerveillement

Le gawk command est un outil polyvalent grâce à ses nombreux arguments. Avec gawk étant l'implémentation GNU de awk , longues, des options de style GNU sont disponibles. Chaque option longue a une option courte correspondante.

Les options courantes sont présentées ci-dessous :

Option Description
-f program-file , --file program-file Lit les commandes d'un fichier, qui sert de script, au lieu du premier argument dans le terminal.
-F fs , --field-separator fs Utilise la variable prédéfinie fs comme séparateur de champ de saisie.
-v var=val , --assign var=val Assigne une valeur à la variable avant d'exécuter un script.
-b , --characters-as-bytes Traite toutes les données comme des caractères à un octet.
-c , --traditional Exécute gawk en mode compatibilité.
-C , --copyright Affiche le message du droit d'auteur GNU.
-d[file] , --dump-variables[=file] Affiche une liste de variables, leurs types et leurs valeurs.
-e program-text , --source program-text Permet de mélanger les fonctions de la bibliothèque et le code source.
-E file , --exec file Désactive les affectations de variables de terminal.
-L [value] , --lint[=value] Imprime des messages d'avertissement concernant le code non portable vers d'autres implémentations AWK.
-S , --sandbox Exécute gawk en mode bac à sable.

Variables intégrées gawk

Le gawk La commande offre plusieurs variables intégrées utilisées pour stocker et ajouter de la valeur à la commande. Les variables sont manipulées depuis le terminal et n'affectent le programme que lorsqu'un utilisateur leur attribue une valeur. Quelques éléments gawk importants les variables intégrées sont :

Variable Description
ARGC Affiche le nombre d'arguments terminaux.
ARGIND Affiche l'index du fichier ARGV.
ARGV Présente un tableau d'arguments terminaux.
ERRNO Contient des chaînes décrivant une erreur système.
FIELDWIDTHS Affiche la liste des largeurs de champ séparées par des espaces.
FILENAME Imprime le nom du fichier d'entrée.
FNR Affiche le numéro d'enregistrement d'entrée.
FS Représente le séparateur de champ de saisie.
IGNORECASE Active ou désactive la recherche sensible à la casse.
NF Imprime le nombre de champs du fichier d'entrée.
NR Imprime le nombre de lignes du fichier actuel.
OFS Affiche le séparateur de champ de sortie.
ORS Affiche le séparateur d'enregistrement de sortie.
RS Imprime le séparateur d'enregistrement d'entrée.
RSTART Représente l'index du premier caractère correspondant.
RLENGTH Représente la longueur de chaîne correspondante.

Exemples de gawk

L'utilisation de gawk les fonctions de correspondance de modèles et de traitement du langage sont étendues. Cet article vise à fournir des exemples pratiques à travers lesquels les utilisateurs apprennent à utiliser l'utilitaire gawk.

Important : Le gawk La commande est sensible à la casse. Utilisez le IGNORECASE variable pour ignorer la casse.

Imprimer les fichiers

Par défaut, gawk avec un print L'argument affiche chaque ligne du fichier spécifié. Par exemple, exécuter la commande cat sur les personnes fichier texte imprime ce qui suit :

Le gawk commande affiche le même résultat :

gawk '{print}' people

Imprimer une colonne

Dans les fichiers texte, les espaces sont généralement utilisés comme délimiteurs pour les colonnes. Les gens le fichier se compose de quatre colonnes :

  1. Nombres ordinaux.
  2. Prénoms.
  3. Noms de famille.
  4. Année de naissance.

Utilisez gawk pour afficher uniquement une colonne spécifique dans le terminal. Par exemple :

gawk '{print $2}' people

La commande imprime uniquement la deuxième colonne. Pour imprimer plusieurs colonnes, comme la colonne 1 (nombres ordinaux) et la colonne 2 (prénoms), exécutez :

gawk '{print $1, $2}' people

Le gawk la commande fonctionne également sans la virgule entre $1 et $2 . Cependant, il n'y a pas d'espaces entre les colonnes dans la sortie :

gawk '{print $1 $2}' people

Filtrer les colonnes

Le gawk La commande offre des options de filtrage supplémentaires. Par exemple, imprimez les lignes contenant la lettre majuscule O avec :

gawk '/O/ {print}' people

Pour afficher uniquement les lignes contenant des lettres O ou A , utilisez la tuyauterie :

gawk '/O|A/ {print}' people

La commande imprime toute ligne contenant un mot avec un O majuscule ouA . D'autre part, utilisez un ET logique (&& ) pour afficher les lignes comprenant à la fois O et l'année 1995 :

gawk '/O/ && /1995/' people

Les filtres fonctionnent également avec des nombres. Par exemple, n'afficher que les personnes nées dans les années 1990 avec :

gawk '/199*/ {print}' people

La sortie affiche uniquement les lignes dans lesquelles la quatrième colonne inclut la valeur 199 .

Personnalisez encore plus la sortie en combinant les options mentionnées précédemment. Par exemple, n'imprimez que les noms et prénoms des personnes nées en 1995 ou 2003 avec :

gawk '/1995|2003/ {print $2, $3}' people

La commande imprime les colonnes deux et trois comme indiqué dans le {print $2, $3} partie. La sortie affiche uniquement les lignes contenant les nombres 1995 et 2003 , même si les colonnes contenant ces nombres sont masquées.

Le gawk La commande permet également aux utilisateurs d'imprimer tout sauf les lignes contenant la chaîne spécifiée avec la logique NOT (! ). Par exemple, omettez les lignes contenant la chaîne 19 dans la sortie :

gawk '!/19/' people

Ajouter des numéros de ligne

Les gens le fichier inclut les numéros de ligne dans la première colonne. Si les utilisateurs travaillent sur un fichier sans numéro de ligne, gawk présente des options pour les ajouter.

Par exemple, les humains le fichier ne contient aucun nombre ordinal :

Pour ajouter des numéros de ligne, exécutez gawk avec FNR et next :

gawk '{ print FNR, $0; next}' humans

La commande ajoute un numéro de ligne avant chaque ligne. Le même résultat est obtenu avec le NR variables :

gawk '{print NR, $0}' mobile.txt

Rechercher le nombre de lignes

Pour compter le nombre total de lignes dans le fichier, utilisez le END déclaration et le NR variable avec gawk :

gawk 'END { print NR }' people

La commande lit chaque ligne. Une fois gawk atteint END , il imprime la valeur de NR - qui contient le nombre total de lignes. Exécuter la même commande sans le END instruction imprime uniquement la valeur de NR - le nombre de lignes :

Filtrer les lignes en fonction de la longueur

Utilisez l'option de commande suivante pour n'imprimer que les lignes de plus de 20 caractères :

gawk 'length>20' people

Cela fonctionne également avec plusieurs arguments. Par exemple, affichez des lignes plus longues que 17 mais plus court que 20 caractères :

gawk 'length<20 && length>17' people

Pour afficher des lignes d'exactement 20 caractères, exécutez :

gawk 'length==20' people

Imprimer les informations en fonction des conditions

Le gawk La commande permet l'utilisation des instructions if-else. Par exemple, une autre façon de filtrer uniquement les personnes nées après 1999 est avec une simple instruction if :

gawk '{ if ($4>1999) print }' people

L'instruction if définit la condition selon laquelle les entrées de la colonne quatre doivent être supérieures à 1999 . La sortie affiche uniquement les entrées qui satisfont à la condition. Développez la commande dans une instruction if-else pour imprimer les lignes ne satisfaisant pas la condition d'origine.

gawk '{if ($4>1999) print $0," ==>00s"; else print $0, "==>90s"}' people

La commande comprend :

  • Instruction Si. Si la condition est satisfaite, gawk ajoute une chaîne "==>90s " à la ligne de sortie.
  • Instruction Else. Si la ligne ne satisfait pas la condition, gawk imprime toujours cette ligne dans la sortie, en ajoutant les "==>00s " chaîne à la sortie.

Ajouter un en-tête

De la même manière que le END permet aux utilisateurs de modifier la sortie à la fin du fichier, le BEGIN formate les données au début.

Lorsqu'il est utilisé avec awk , le BEGIN les sections sont toujours exécutées en premier. Après cela, awk exécute les lignes restantes. Une façon d'utiliser le BEGIN L'instruction consiste à ajouter un en-tête à la sortie.

Exécutez la commande suivante pour ajouter une section au-dessus du awk sortie :

gawk 'BEGIN {print "No/First&Last Name/Year of Birth"} {print $0}' people

Trouvez la longueur de ligne la plus longue

Combinez les arguments précédents avec le si et END déclarations pour trouver la ligne la plus longue dans les personnes fichier :

gawk '{ if (length($0) > max) max = length($0) } END { print max }' people

Trouvez le nombre de champs

Le gawk La commande permet également aux utilisateurs d'afficher le nombre de champs avec le NF variable. La manière la plus simple d'afficher le nombre de champs imprime une sortie difficile à lire :

gawk '{print NF}' people

La commande affiche le nombre de champs par ligne sans aucune information supplémentaire. Pour personnaliser la sortie et la rendre plus lisible par l'homme, ajustez la commande initiale :

gawk '{print NR, "-->", NF}' people

La commande inclut désormais :

  • Le NR variable qui ajoute des numéros de ligne à chaque ligne de sortie.
  • Le --> chaîne qui sépare les numéros de ligne des numéros de champ.

Une autre façon d'afficher les numéros de ligne et de champ dans les personnes fichier est d'imprimer des colonnes avec NF . Notez que les personnes le fichier comprend des nombres ordinaux dans la première colonne. Donc le NR variable est omise :

gawk '{print $0, "-->", NF}' people

Enfin, pour imprimer le nombre total de champs, exécutez :

gawk '{num_fields = num_fields + NF} END {print num_fields}' people

Le fichier comporte dix lignes et quatre colonnes. Par conséquent, la sortie est correcte.

Conclusion

Après avoir suivi ce tutoriel, vous savez comment utiliser le gawk pour le traitement de texte avancé et la manipulation de données.

Pensez également à utiliser grep, un puissant outil Linux pour rechercher des chaînes, des mots et des modèles.


Linux
  1. Commande de tri sous Linux avec des exemples

  2. commande chattr sous Linux avec des exemples

  3. Commande JQ sous Linux avec exemples

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Utilisation de la commande Cat sous Linux avec des exemples

Commande Linux WC avec exemples

Commande IP Linux avec exemples

Utilisation de la commande Linux mv avec des exemples

Commande de montage Linux avec exemples

Linux make Commande avec des exemples