Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
conversion d'int en double java
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans , , et . De plus, 0 $ représente la ligne entière.
$ awk '{print ,}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, et représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
}' employee.txt>
Sortir:
printemps mvc
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print ,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
10 ml c'est combien
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length(Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
)>max) max = longueur (Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length(Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if( == 'B6') print Awk est un langage de script utilisé pour manipuler des données et générer des rapports. Le langage de programmation de commandes 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 petits 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 à entreprendre lorsqu'une correspondance est trouvée dans un document. doubler. Awk est principalement utilisé pour l'analyse et le traitement de modèles. 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 l'abréviation 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 de saisie en champs
(c) Compare la ligne/les champs d'entrée au modèle
(d) Effectue des actions sur les lignes correspondantes
2. Utile pour :
(a) Transformer les 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 sur les chaînes
(c) Conditions et boucles
Syntaxe:
awk options 'selection _criteria {action }' input-file>fichier de sortie> Possibilités :
-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 le fichier texte suivant comme fichier d'entrée pour tous les cas ci-dessous :
$cat>employé.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportement par défaut d'Awk : Par défaut, Awk imprime chaque ligne de données du fichier spécifié.
$ awk '{print}' employee.txt> Sortir:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Dans l’exemple ci-dessus, aucun modèle n’est donné. Les actions sont donc applicables à toutes les lignes. L'action print sans aucun argument imprime la ligne entière par défaut, elle imprime donc toutes les lignes du fichier sans échec.
2. Imprimez les lignes qui correspondent au motif donné.
$ awk '/manager/ {print}' employee.txt> Sortir:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Dans l'exemple ci-dessus, la commande awk imprime toute la ligne qui correspond au « manager ».
3. Diviser une ligne en champs : Pour chaque enregistrement, c'est-à-dire ligne, la commande awk divise l'enregistrement délimité par un espace par défaut et le stocke dans les variables $n. Si la ligne comporte 4 mots, elle sera stockée respectivement dans $1, $2, $3 et $4. De plus, 0 $ représente la ligne entière.
$ awk '{print $1,$4}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 et $4 représentent respectivement les champs Nom et Salaire.
Variables intégrées dans Awk
Les variables intégrées d'Awk incluent les variables de champ (1 $, 2 $, 3 $, etc. (0 $ correspond à la ligne entière)) qui divisent 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. N'oubliez pas que les enregistrements sont généralement des lignes. La commande Awk exécute les instructions de modèle/action une fois pour chaque enregistrement d'un fichier. NF : la commande NF conserve le nombre de champs dans l'enregistrement d'entrée actuel. FS : la commande FS contient le caractère séparateur de champ qui est utilisé pour diviser les champs sur la ligne de saisie. La valeur par défaut est l'espace blanc, c'est-à-dire les caractères d'espace et de tabulation. 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 actuel. Puisque, 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 une nouvelle 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 comporte plusieurs paramètres séparés par des virgules, il imprimera la valeur 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 nouvelle ligne. print affiche automatiquement le contenu de l'ORS à la fin de tout ce qu'il est donné à imprimer.
Exemples:
Utilisation des variables intégrées NR (Afficher le numéro de ligne)
$ awk '{print NR,$0}' employee.txt> Sortir:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Dans l'exemple ci-dessus, la commande awk avec NR imprime toutes les lignes avec le numéro de ligne.
Utilisation des variables intégrées NF (Afficher le dernier champ)
$ awk '{print $1,$NF}' employee.txt> Sortir:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Dans l'exemple ci-dessus, $1 représente le nom et $NF représente le salaire. Nous pouvons obtenir le salaire en utilisant $NF , où $NF représente le dernier champ.
Une autre utilisation des variables intégrées NR (ligne d'affichage de 3 à 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Sortir:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Plus d'exemples
Pour le fichier texte donné :
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pour imprimer le premier élément avec le numéro de ligne (NR) séparé par – de chaque ligne dans geeksforgeeks.txt :
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
La question devrait être : - Pour renvoyer la deuxième colonne/élément de geeksforgeeks.txt :
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pour imprimer toute ligne non vide si présente
$ awk 'NF <0' geeksforgeeks.txt>
ici, NF doit être égal à 0 au moins et l'utilisateur doit également imprimer le numéro de ligne :
bonne réponse : awk 'NF == 0 {print NR}' geeksforgeeks.txt
OU
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Pour connaître la longueur de la ligne la plus longue présente dans le fichier :
$ awk '{ if (length($0)>max) max = longueur ($0) } FIN { print max }' geeksforgeeks.txt> 13>
5) Pour compter les lignes d'un fichier :
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Impression de lignes de plus de 10 caractères :
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Pour rechercher/vérifier n’importe quelle chaîne dans une colonne spécifique :
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
;}' geeksforgeeks.txt> 8) Pour imprimer les carrés des premiers nombres de 1 à n, dites 6 :
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>