Exemple 1 : imprimer une plage de colonnes à partir d'une sortie de commande
La commande suivante imprimera les deuxième, troisième et quatrième colonnes de la sortie de la commande, 'ls -l'. Ici, les numéros de colonne sont indiqués explicitement, mais une commande plus efficace pour imprimer la même plage de colonnes est montrée dans l'exemple suivant.
$ ls -l | awk ' print $2, $3, $4 'La sortie suivante est produite par la commande ci-dessus.
Exemple 2 : imprimer la plage de colonnes d'un fichier à l'aide d'un pour boucle
Pour suivre cet exemple et les autres exemples de ce didacticiel, créez un fichier texte nommé Des marques.SMS avec le contenu suivant:
ID CSE203 CSE102 CSE2021109 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 des colonnes et la boucle comprend trois étapes. le NF variable indique le nombre total de champs ou de colonnes du fichier.
$ marques de chat.SMS$ awk 'for(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 ID et les marques pour CSE203 et CSE102.
Exemple 3 : imprimer la plage de colonnes en définissant les variables de début 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 variable est 1, et la valeur de la fin la variable est 3. Ces variables sont itérées dans une boucle for pour imprimer les valeurs des colonnes.
$ ls -l | awk ' COMMENCER premier = 1; dernier = 3pour (i = premier; je < last; i++) printf("%s ", $i) print $last '
La sortie suivante apparaîtra après l'exécution de la commande. La sortie affiche les trois premières valeurs de colonne de la sortie, 'ls -l'.
Exemple 4 : Imprimer une plage de colonnes à partir d'un fichier avec formatage
La commande 'awk' suivante imprimera les trois premières colonnes de Des marques.SMS utilisant imprimer et le séparateur de champ de sortie (OFS). Ici, la boucle for comprend trois étapes, et trois colonnes seront imprimées en séquence à partir du fichier. OFS est utilisé ici pour ajouter de l'espace entre les colonnes. Lorsque la valeur du compteur de la boucle (i) est égale à la fin variable, puis un saut de ligne (\n) est généré.
$ marques de chat.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 : imprimer la plage de colonnes d'un fichier à l'aide d'une instruction conditionnelle
La commande 'awk' suivante imprimera les première et dernière colonnes d'un fichier en utilisant une boucle for 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 un saut de ligne (\n) après l'impression de la dernière colonne.
$ marques de chat.SMS$ awk -v start=2 -v end=3 ' for (i=1; i<=NF;i++)
si( i>=démarrer && i<=end) continue;
else printf("%s%s", $i,(i!=NF) ? OFS : ORS) ' marques.SMS
La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus. La sortie affiche les première et dernière colonnes de notes.SMS.
Exemple 6 : Imprimer la plage de colonnes d'un fichier à l'aide de la variable NF
La commande 'awk' suivante imprimera les première et dernière colonnes du fichier en utilisant une variable NF. Aucune boucle ou instruction conditionnelle n'est utilisée pour imprimer les valeurs des colonnes. 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.
$ marques de chat.SMS$ awk 'print $(NF-3)" "$NF' marques.SMS
La sortie suivante est produite en exécutant les commandes ci-dessus. La sortie affiche les première et dernière colonnes de notes.SMS.
Exemple 7 : Imprimer la plage de colonnes d'un fichier en 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. Étant donné que la colonne commence à 1 $ dans la commande 'awk', la fonction index() renverra 3 $ et la commande imprimera de 3 $ à 4 $.
$ marques de chat.SMS$ awk 'print substr($0,index($0,$3))' marques.SMS
La sortie suivante sera produite en exécutant les commandes ci-dessus.
Exemple 8 : imprimer séquentiellement une plage de colonnes d'un fichier à l'aide de printf
La commande 'awk' suivante imprimera les première, deuxième et troisième colonnes de notes.txt en définissant suffisamment d'espace pour 10 caractères.
$ marques de chat.SMS$ awk '//printf "%10s %10s %10s\n",$1,$3,$2 ' marques.SMS
La sortie suivante sera produite en exécutant les commandes ci-dessus.
Conclusion
Il existe différentes manières d'imprimer la plage de colonnes à partir de la sortie de la 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.