Comment imprimer la première colonne ou la dernière colonne ou les deux en utilisant 'awk'

Comment imprimer la première colonne ou la dernière colonne ou les deux en utilisant 'awk'

La commande 'awk' de Linux est un utilitaire puissant pour différentes opérations sur des fichiers texte tels que la recherche, le remplacement et l'impression. Il est facile à utiliser avec les données tabulaires car elle divise automatiquement chaque ligne en champs ou colonnes en fonction du séparateur de champs. Lorsque vous travaillez avec un fichier texte qui contient des données tabulaires et que vous souhaitez imprimer les données d'une colonne particulière, alors la commande 'awk' est la meilleure option. Dans ce tutoriel, nous vous montrerons comment imprimer la première colonne et / ou la dernière colonne d'une ligne ou d'un fichier texte.

Imprimez la première colonne et / ou la dernière colonne d'une sortie de commande

De nombreuses commandes Linux telles que la commande «LS» génèrent des sorties tabulaires. Ici, nous vous montrerons comment imprimer la première colonne et / ou la dernière colonne de la sortie de la commande 'ls -l'.

Exemple 1: Imprimez la première colonne d'une sortie de commande

La commande 'awk' suivante imprimera la première colonne de la sortie de la commande 'ls -l'.

$ ls -l
$ ls -l | awk 'print $ 1'

La sortie suivante sera produite après l'exécution des commandes ci-dessus.

Exemple 2: Imprimez la dernière colonne d'une sortie de commande

La commande 'awk' suivante imprimera la dernière colonne de la sortie de la commande 'ls -l'.

$ ls -l
$ ls -l | awk 'print $ nf'

La sortie suivante sera produite après l'exécution des commandes ci-dessus.

Exemple 3: Imprimez les première et dernière colonnes d'une sortie de commande

La commande 'awk' suivante imprimera les premières et dernières colonnes de la sortie de la commande 'ls -l'.

$ ls -l
$ ls -l | awk 'print $ 1, $ nf'

La sortie suivante sera produite après l'exécution des commandes ci-dessus.

Imprimez la première colonne et / ou la dernière colonne d'un fichier texte

Ici, nous vous montrerons comment utiliser la commande 'awk' pour imprimer la première colonne et / ou la dernière colonne d'un fichier texte.

Créer un fichier texte

Pour suivre ce tutoriel, créez un fichier texte nommé clients.SMS avec le contenu suivant. Le fichier contient trois types de données clients: nom avec ID, e-mail et numéro de téléphone. Le caractère d'onglet (\ t) est utilisé pour séparer ces valeurs.

Nom du téléphone e-mail
Jonathon Bing - 1001 Jon @ Gmail.com 01967456323
Micheal Jackson - 2006 mic @ gmail.com 01756235643
Janifer Lopez - 3029 Jani @ gmail.com 01822347865
John Abraham - 4235 John @ gmail.com 01590078452
Mir Sabbir - 2756 Mir @ Gmail.com 01189523978

Exemple 4: Imprimez la première colonne d'un fichier sans utiliser un séparateur de champ

Si aucun séparateur de champ n'est utilisé dans la commande 'awk', alors un espace est utilisé comme séparateur de champ par défaut. La commande 'awk' suivante imprimera la première colonne en utilisant le séparateur par défaut.

$ CLIENTS CAT.SMS
$ awk 'imprimer $ 1' les clients.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Notez que la sortie affiche uniquement le prénom du client car l'espace est appliqué comme séparateur de champ. La solution à ce problème est montrée dans l'exemple suivant.

Exemple 5: Imprimez la première colonne d'un fichier avec un délimiteur

Ici, \ T est utilisé comme séparateur de champ pour imprimer la première colonne du fichier. L'option '-f' est utilisée pour définir le séparateur de champ.

$ CLIENTS CAT.SMS
$ awk -f '\ t' 'print $ 1' Clients.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Le contenu du fichier est divisé en trois colonnes basées sur \ t. Par conséquent, le nom et l'ID du client sont imprimés comme la première colonne. Si vous souhaitez imprimer le nom du client sans l'ID, continuez à l'exemple suivant.


Si vous souhaitez imprimer le nom du client sans l'ID, vous devez utiliser '-' comme séparateur de champ. La commande 'awk' suivante imprimera le nom du client uniquement comme la première colonne.

$ CLIENTS CAT.SMS
$ awk -f '-' 'print $ 1' Clients.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. La sortie comprend les noms complets des clients sans leurs identifiants.

Exemple 6: Imprimez la dernière colonne d'un fichier

La commande 'awk' suivante imprimera la dernière colonne des clients.SMS. Parce qu'aucun séparateur de champ n'est utilisé dans la commande, l'espace sera utilisé comme séparateur de champ.

$ CLIENTS CAT.SMS
$ awk 'imprimer $ nf' les clients.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. La dernière colonne contient des numéros de téléphone, comme indiqué dans la sortie.

Exemple 7: Imprimez les première et dernière colonnes d'un fichier

La commande 'awk' suivante imprimera les première et dernière colonnes de clients.SMS. Ici, l'onglet (\ t) est utilisé comme séparateur de champ pour diviser le contenu en colonnes. Ici, l'onglet (\ t) est utilisé comme séparateur pour la sortie.

$ CLIENTS CAT.SMS
$ awk -f "\ t" 'print $ 1 "\ t" $ nf' les clients.SMS

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus. Le contenu est divisé en trois colonnes par \ t; La première colonne contient le nom et l'ID du client et la deuxième colonne contient le numéro de téléphone. Les première et dernière colonnes sont imprimées en utilisant \ t comme séparateur.

Conclusion

La commande 'awk' peut être appliquée de différentes manières pour obtenir la première colonne et / ou la dernière colonne à partir de toute sortie de commande ou de données tabulaires. Il est important de noter qu'un séparateur de champ est requis dans la commande, et si l'on n'est pas fourni, alors l'espace est utilisé.