Comment utiliser awk pour imprimer des champs et des colonnes dans le fichier
- 4009
- 421
- Lucas Bernard
Dans cette partie de notre série de commandes Linux Awk, nous allons jeter un coup d'œil à l'une des caractéristiques les plus importantes de Awk, qui est l'édition de terrain.
Il est bon de savoir que Awk divise automatiquement les lignes d'entrée qui lui sont fournies en champs, et un champ peut être défini comme un ensemble de caractères séparés des autres champs par un séparateur de champ interne.
Champs et colonnes d'impression awkSi vous connaissez la programmation UNIX / Linux ou Bash Shell, vous devez savoir quel séparateur de champ interne (Ifs) la variable est. Les ifs par défaut dans awk sont l'onglet et l'espace.
C'est ainsi que l'idée de séparation de champs fonctionne dans Awk: Lorsqu'il rencontre une ligne d'entrée, selon l'IFS défini, le premier jeu de caractères est un champ de champ, qui est accessible en utilisant 1 $, Le deuxième ensemble de caractères est le champ deux, accessible en utilisant 2 $, Le troisième ensemble de caractères est le champ trois, accessible en utilisant 3 $ et ainsi de suite jusqu'au dernier jeu de caractère (s).
Pour mieux comprendre cette modification de champ awk, jetons un coup d'œil aux exemples ci-dessous:
Exemple 1: J'ai créé un fichier texte appelé Tecmitinfo.SMS.
# VI Tecminttinfo.txt # chat Tecmitinfo.SMSCréer un fichier dans Linux
Ensuite, à partir de la ligne de commande, j'essaie d'imprimer le d'abord, deuxième et troisième champs du fichier Tecmitinfo.SMS Utilisation de la commande ci-dessous:
$ awk '// print $ 1 $ 2 $ 3' Tecmitinfo.SMS Tecmint.comethe
De la sortie ci-dessus, vous pouvez voir que les caractères des trois premiers champs sont imprimés en fonction du Ifs défini quel est l'espace:
- Un champ qui est «Tecmint.com » est accessible en utilisant
1 $
. - Field deux qui est "est" est accessible en utilisant
2 $
. - Champ trois qui est "le" est accessible en utilisant
3 $
.
Si vous avez remarqué dans la sortie imprimée, les valeurs de champ ne sont pas séparées et c'est ainsi que l'impression se comporte par défaut.
Pour afficher clairement la sortie avec un espace entre les valeurs du champ, vous devez ajouter (,)
Opérateur comme suit:
$ awk '// print $ 1, $ 2, $ 3; 'Tecminttinfo.SMS Tecmint.com est le
Une chose importante à noter et à rappeler toujours est que l'utilisation de ($)
dans Awk est différent de son utilisation dans les scripts shell.
Sous Shell Scripting ($)
est utilisé pour accéder à la valeur des variables pendant que dans Awk ($)
Il n'est utilisé que lors de l'accès au contenu d'un champ mais pas pour accéder à la valeur des variables.
Exemple 2: Jetons un coup d'œil à un autre exemple à l'aide d'un fichier qui contient plusieurs lignes appelées my_shoping.liste.
No Item_Name Unit_Price Prix de quantité 1 souris # 20 000 1 # 20 000 2 Monitor # 500 000 1 # 500 000 3 RAM_CHIPS # 150 000 2 # 300 000 4 Ethernet_Cables # 30 000 4 # 120 000
Dites que vous vouliez uniquement imprimer Prix unitaire
De chaque article sur la liste des courses, vous devrez exécuter la commande ci-dessous:
$ awk '// print $ 2, $ 3' my_shopping.SMS Item_name unit_price souris # 20 000 Moniteur # 500 000 RAM_CHIPS # 150 000 Ethernet_cables # 30 000
Awk a également un printf
La commande qui vous aide à formater votre sortie est une bonne façon car vous pouvez voir que la sortie ci-dessus n'est pas suffisamment claire.
En utilisant printf
pour formater la sortie du Nom de l'article et Prix unitaire:
$ awk '// printf "% -10s% s \ n", $ 2, $ 3' my_shopping.SMS Item_name unit_price souris # 20 000 Moniteur # 500 000 RAM_CHIPS # 150 000 Ethernet_cables # 30 000
Résumé
L'édition sur le terrain est très importante lors de l'utilisation Awk Pour filtrer le texte ou les chaînes, il vous aide à obtenir des données particulières dans des colonnes dans une liste. Et rappelez-vous toujours que l'utilisation de ($)
opérateur dans Awk est différent de celui des scripts shell.
J'espère que l'article vous a été utile et pour toute information supplémentaire requise ou questions, vous pouvez publier un commentaire dans la section des commentaires.
- « Comment utiliser des expressions awk et régulières pour filtrer le texte ou la chaîne dans les fichiers
- Ebook introduisant le Django pour démarrer avec les bases de Python »