Awk

Comment imprimer une plage de colonnes à l'aide de la commande 'awk'

Comment imprimer une plage de colonnes à l'aide de la commande 'awk'
La commande 'awk' est l'une des nombreuses commandes qui peuvent être utilisées pour imprimer une plage de colonnes à partir de données tabulaires sous Linux. La commande 'awk' peut être utilisée directement depuis le terminal en exécutant le fichier de script 'awk'. Dans ce tutoriel, nous allons vous montrer comment imprimer une plage de colonnes à partir de données tabulaires.

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 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 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 = 3
pour (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.

5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...
Bataille pour Wesnoth 1.13.6 Développement publié
Bataille pour Wesnoth 1.13.6 publiée le mois dernier, est la sixième version de développement de la 1.13.x series et il apporte un certain nombre d'am...
Comment installer League Of Legends sur Ubuntu 14.04
Si vous êtes fan de League of Legends, alors c'est l'occasion pour vous de tester League of Legends. Notez que LOL est pris en charge sur PlayOnLinux ...