Exemple 1: Imprimez une gamme de colonnes à partir d'une sortie de commande
La commande suivante imprimera les deuxième, troisième et quatrième colonnes à partir de la sortie de commande, 'ls -l'. Ici, les numéros de colonne sont énoncés explicitement, mais une commande plus efficace pour imprimer la même plage de colonnes est affichée dans l'exemple suivant.
$ ls -l | awk 'print $ 2, $ 3, $ 4'
La sortie suivante est produite par la commande ci-dessus.
Exemple 2: Imprimez la plage de colonnes à partir d'un fichier en utilisant un pour boucle
Pour suivre cet exemple et les autres exemples de ce tutoriel, créez un fichier texte nommé Des marques.SMS avec le contenu suivant:
ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
La commande 'awk' suivante imprimera les trois premières colonnes de marques.SMS. Le pour la boucle est utilisée pour imprimer les valeurs de la colonne, et la boucle comprend trois étapes. Le NF La variable indique le nombre total de champs ou de colonnes du fichier.
$ Cat Marks.SMS
$ awk 'pour (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt
La sortie suivante sera produite en exécutant la commande. La sortie montre l'étudiant Identifiant Et les marques pour CSE203 et CSE102.
Exemple 3: Imprimez la gamme des colonnes en définissant les variables de démarrage et de fin
La commande 'awk' suivante imprimera les trois premières colonnes de la sortie de commande 'ls -l' en initialisant le départ et fin variables. Ici, la valeur du départ la variable est 1 et la valeur du fin la variable est 3. Ces variables sont itérées dans une boucle pour imprimer les valeurs de la colonne.
$ ls -l | awk 'begin premier = 1; dernier = 3
pour (i = d'abord; i < last; i++) printf("%s ", $i) print $last '
La sortie suivante apparaîtra après l'exécution de la commande. La sortie montre les trois premières valeurs de colonne de la sortie, «ls -l».
Exemple 4: Imprimez une gamme de colonnes à partir d'un fichier avec formatage
La commande 'awk' suivante imprimera les trois premières colonnes de Des marques.SMS en utilisant printf et séparateur de champ de sortie (De). Ici, la boucle FOR comprend trois étapes, et trois colonnes seront imprimées en séquence à partir du fichier. De est utilisé ici pour ajouter de l'espace entre les colonnes. Lorsque la valeur de comptoir de la boucle (i) est égale à fin variable, alors une nouvelle ligne (\ n) est générée.
$ Cat Marks.SMS
$ awk -v start = 1 -v end = 3 'for (i = start; i<=end;i++) printf("%s%s",
$ i, (i == fin) ? "\ n": ofs) 'marques.SMS
La sortie suivante sera générée après l'exécution des commandes ci-dessus.
Exemple 5: Imprimez la plage de colonnes à partir d'un fichier à l'aide d'une instruction conditionnelle
La commande 'awk' suivante imprimera les première et dernière colonnes à partir d'un fichier en utilisant une boucle pour une boucle et une instruction IF. Ici, la boucle for comprend quatre étapes. Le départ et fin Les variables sont utilisées dans le script pour omettre les deuxième et troisième colonnes du fichier en utilisant la condition IF. La variable OFS est utilisée pour ajouter de l'espace entre les colonnes, et la variable ORS est utilisée pour ajouter une nouvelle ligne (\ n) après imprimer la dernière colonne.
$ Cat Marks.SMS
$ awk -v start = 2 -v end = 3 'for (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("% s% s", $ i, (i!= Nf) ? Des marques: ors) '.SMS
La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus. La sortie montre les première et dernière colonnes de marques.SMS.
Exemple 6: Imprimez la plage de colonnes à partir d'un fichier à l'aide de la variable NF
La commande 'awk' suivante imprimera les première et dernière colonnes à partir du fichier en utilisant une variable NF. Aucune boucle ou instruction conditionnelle n'est utilisée pour imprimer les valeurs de la colonne. NF indique le nombre de champs. Il y a quatre colonnes dans les marques.SMS. $ (Nf-3) définit la première colonne, et $ nf indique la dernière colonne.
$ Cat Marks.SMS
$ awk 'print $ (nf-3) "" $ nf' marques.SMS
La sortie suivante est produite en exécutant les commandes ci-dessus. La sortie montre les première et dernière colonnes de marques.SMS.
Exemple 7: Imprimez la plage de colonnes à partir d'un fichier utilisant substr () et index ()
La fonction index () renvoie une position si la deuxième valeur d'argument existe dans la première valeur d'argument. La fonction substr () peut prendre trois arguments. Le premier argument est une valeur de chaîne, le deuxième argument est la position de départ, et le troisième argument est la longueur. Le troisième argument de substr () est omis dans la commande suivante. Parce que la colonne commence à partir de 1 1 dans la commande 'awk', la fonction index () renverra 3 $ et la commande imprimera de 3 $ à 4 $.
$ Cat Marks.SMS
$ awk 'imprimer substr ($ 0, index ($ 0, $ 3))' marques.SMS
La sortie suivante sera produite en exécutant les commandes ci-dessus.
Exemple 8: Imprimez séquentiellement une gamme de colonnes à partir d'un fichier à l'aide de printf
La commande 'awk' suivante imprimera les première, deuxième et troisième colonnes de marques.txt en définissant suffisamment d'espace pour 10 caractères.
$ Cat Marks.SMS
$ awk '// printf "% 10s% 10s% 10s \ n", 1 $, $ $, $ 2' Marques.SMS
La sortie suivante sera produite en exécutant les commandes ci-dessus.
Conclusion
Il existe différentes façons d'imprimer la plage de colonnes à partir de la sortie de commande ou d'un fichier. Ce tutoriel montre comment la commande 'awk' peut aider les utilisateurs de Linux à imprimer du contenu à partir de données tabulaires.