Connaître l'essentiel de la commande «awk» est très important lorsqu'il s'agit de traiter efficacement les données, et ce post couvre les principales caractéristiques de la commande «awk». Vérifions d'abord la syntaxe:
$ awk [options] [fichier]
Certaines des options couramment utilisées sont données dans le tableau ci-dessous:
Option | Description |
-F | Pour spécifier un séparateur de fichiers |
-F | Spécifiez le fichier qui contient le script "awk" |
-V | Pour attribuer une variable |
Jetons un coup d'œil à quelques exemples sur l'utilisation de la commande «awk», et pour une démonstration, j'ai fait un fichier texte du nom de fichier de test.SMS:
Comment imprimer une colonne d'un fichier avec la commande awk?
La commande «awk» peut être utilisée pour obtenir une colonne spécifique du fichier texte. Pour imprimer le contenu de l'utilisation du fichier:
$ Cat TestFile.SMS
Maintenant, pour imprimer la deuxième colonne du fichier, utilisez:
$ awk 'print $ 2' TestFile.SMS
Pour imprimer plus d'un champ, utilisez la commande:
$ awk 'print $ 1, $ 2, $ 3' testfile.SMS
Si vous n'utilisez pas la virgule «», alors la sortie sera sans espaces:
$ awk 'print $ 1 $ 2 $ 3' TestFile.SMS
Comment utiliser l'expression régulière avec la commande awk:
Pour correspondre aux chaînes ou à toute expression, nous utilisons des barres obliques «//», par exemple, si vous souhaitez imprimer les noms de personnes qui étudient «l'histoire», utilisez:
$ awk '/ historique / print $ 2' TestFile.SMS
La sortie montre clairement que seuls «Sam» et «Tommy» étudient le cours «History».
Comment utiliser l'expression relationnelle avec la commande «awk»:
Pour correspondre au contenu d'un champ spécifique, l'expression relationnelle peut être utilisée. Pour correspondre à n'importe quelle chaîne ou expression contre un champ, indiquez le champ et utilisez l'opérateur de comparaison «~» avec le modèle présenté dans la commande suivante:
$ awk '$ 3 ~ / is / print $ 2' testfile.SMS
La sortie ci-dessus affichant chaque champ de la colonne 2 sur chaque champ qui contient «IS» dans la colonne 3.
Et pour obtenir la sortie opposée de la commande ci-dessus, utilisez le «! ~ ”Opérateur:
$ awk '$ 3! ~ / is / print $ 2 'TestFile.SMS
À titre de comparaison, nous pouvons également utiliser des opérateurs comme plus que «>» et moins que «<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testfile.SMS
La sortie a imprimé les noms de personnes qui ont obtenu des notes de plus de 70.
Comment utiliser le motif de plage avec la commande awk:
Une plage peut également être utilisée pour la recherche; Utilisez simplement la virgule «» pour séparer la plage comme présenté dans la commande mentionnée ci-dessous:
$ awk '/ joel /, / marlene / print $ 3' testfile.SMS
La sortie montre les sujets de la gamme de «Joel» à «Marlene» de la colonne 2. Nous pouvons utiliser le signe double égal «==» pour définir une plage; Voir l'exemple ci-dessous:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' TestFile.SMS
La sortie affiche les noms des personnes de la colonne 2 pour la plage de marques «70 à 80» de la colonne 4.
Comment combiner le modèle à l'aide de l'opérateur logique:
L'utilisation d'opérateurs logiques tels que ou «||» et «&&» vous permettent de combiner des modèles pour la recherche. Utilisez la commande suivante
$ awk '$ 4> 80 && $ 6> 0.4 imprimer 2 $ '.SMS
La commande ci-dessus imprime les noms des gens contre le quatrième champ plus significatif que 80 et le sixième champ supérieur à 0.4. Et seuls deux enregistrements remplissent la condition.
Les expressions spéciales de la commande awk:
Il y a deux expressions spéciales, "COMMENCER" et "FIN»:
Commencer: effectuer une action avant le traitement des données
Fin: pour effectuer une action après le traitement des données
$ awk 'begin print "Le traitement a commencé"; imprimer 2 $; Fin imprimer "Le traitement a terminé" 'TestFile.SMS
La variable intégrée utile de la commande awk:
La commande awk a diverses variables qui aident au traitement des données:
Variable | Description |
NF | Il donne le nombre de champs dans les données |
NR | Il donne le nombre de l'enregistrement actuel |
NOM DE FICHIER | Affiche le nom du fichier qui est actuellement en cours |
FS et OFS | Séparateur de champ et séparateur de champ de sortie |
RS et ORS | Sépare le séparateur d'enregistrement d'enregistrement et de sortie |
Par exemple:
$ awk 'end imprimer "Le nom du fichier est" le nom de fichier "a" nf "champs et" nr "enregistre"' testfile.SMS
Nous utilisons «fin», mais si vous utilisez «Begin», la sortie donnerait 0 champs et 0 enregistrements.
Comment changer le séparateur d'enregistrement:
Le séparateur par défaut dans l'enregistrement est généralement de l'espace; S'il y a une virgule «» ou dot «.«En tant que séparateur de champ, utilisez l'option« FS »avec le séparateur.
Ayons un autre fichier où les champs de données sont séparés par une virgule Colons ":":
$ cat testfile2.SMS
$ awk 'begin fs = “:” print $ 2' testfile2.SMS
Étant donné que le séparateur du fichier est un côlon, mais la commande «awk» même bénéfique pour les fichiers comme celui-ci, utilisez simplement l'option «FS».
Le «-f» peut également être utilisé:
$ awk -f ":" 'print $ 2' testfile2.SMS
Le séparateur d'enregistrement par défaut est «Newline» et pour définir le séparateur d'enregistrement sur «:», utilisez:
$ awk 'begin rs = “:” print $ 1' testfile2.SMS
Actions awk:
Les actions awk sont de minuscules programmes entourés de supports «» et ont plus d'une déclaration séparée par des demi-colons »;».
La déclaration la plus utilisée avec la commande «awk» est la déclaration «imprimer». Par exemple, pour imprimer un texte avec chaque enregistrement, utilisez la chaîne de texte en guillemets:
$ awk '"le est un champ", $ 2' TestFile.SMS
Performons une opération de somme simple en utilisant awk:
$ awk 'sum + = $ 4 end printf "% d \ n", sum' testfile.SMS
Création d'un programme AWK:
Commençons par la programmation «awk», la programmation donnée ci-dessous fait simplement la multiplication:
COMMENCER
i = 2
tandis que (J<4)
Imprimez «La multiplication de 2 avec» j «est» i * j;
J++
Enregistrez le programme par le nom de «mycode.awk»Et pour l'exécuter, ouverte terminal et type:
$ awk -f mycode.awk
Conclusion:
La commande «awk» est une commande pratique à traiter, scanner les données de fichiers texte, tels que la séparation d'un champ particulier d'un fichier; Nous utilisons la commande «awk». Il est plus facile de rechercher quoi que ce soit sous n'importe quelle forme ou modèle à partir des fichiers texte. Dans ce guide, nous comprenons les bases de la commande «awk» et son utilisation. La commande «awk» valide les données, génère des rapports et même des fichiers d'analyse. L'utilisation de commandes simples «awk» permet également aux utilisateurs d'écrire de minuscules programmes pour traiter les données plus efficacement.