Comment utiliser awk pour imprimer des champs et des colonnes dans le fichier

Comment utiliser awk pour imprimer des champs et des colonnes dans le fichier

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 awk

Si 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.SMS 
Cré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:

  1. Un champ qui est «Tecmint.com » est accessible en utilisant 1 $.
  2. Field deux qui est "est" est accessible en utilisant 2 $.
  3. 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.