Les éléments suivants incluent certains scénarios dans lesquels la suppression des espaces peut être nécessaire :
- Pour reformater le code source
- Pour nettoyer les données
- Pour simplifier les sorties de ligne de commande
Il est possible de supprimer les espaces manuellement si un fichier qui ne contient que quelques lignes. Mais, pour un fichier contenant des centaines de lignes, il sera alors difficile de supprimer tous les espaces manuellement. Il existe divers outils de ligne de commande disponibles à cet effet, notamment sed, awk, cut et tr. Parmi ces outils, awk est l'une des commandes les plus puissantes.
Qu'est-ce qu'Awk?
Awk est un langage de script puissant et utile utilisé dans la manipulation de texte et la génération de rapports. La commande awk est abrégée en utilisant les initiales de chacune des personnes (Aho, Weinberger et Kernighan) qui l'ont développée. Awk vous permet de définir des variables, des fonctions numériques, des chaînes et des opérateurs arithmétiques ; créer des rapports formatés ; et plus.
Cet article explique l'utilisation de la commande awk pour rogner les espaces blancs. Après avoir lu cet article, vous apprendrez à utiliser la commande awk pour effectuer les opérations suivantes :
- Couper tous les espaces dans un fichier
- Couper les espaces blancs de début
- Couper les espaces de fin
- Coupez les espaces blancs de début et de fin
- Remplacer plusieurs espaces par un seul espace
Les commandes de cet article ont été exécutées sur un Ubuntu 20.04 Système Fossa Fossa. Cependant, les mêmes commandes peuvent également être exécutées sur d'autres distributions Linux. Nous utiliserons l'application Ubuntu Terminal par défaut pour exécuter les commandes de cet article. Vous pouvez accéder au terminal en utilisant le raccourci clavier Ctrl+Alt+T.
À des fins de démonstration, nous utiliserons le fichier d'exemple nommé « sample.SMS.” pour exécuter les exemples fournis dans cet article.
Afficher tous les espaces dans un fichier
Pour afficher tous les espaces présents dans un fichier, dirigez la sortie de la commande cat vers la commande tr, comme suit :
$ échantillon de chat.txt | tr " " "*" | tr "\t" "&"Cette commande remplacera tous les espaces dans le fichier donné par le caractère (*). Après avoir entré cette commande, vous pourrez voir clairement où tous les espaces blancs (y compris les espaces blancs de début et de fin) sont présents dans le fichier.
Les caractères * dans la capture d'écran suivante montrent où tous les espaces sont présents dans le fichier exemple. Un seul * représente un seul espace.
Couper tous les espaces
Pour supprimer tous les espaces d'un fichier, dirigez la commande out of cat vers la commande awk, comme suit :
$ échantillon de chat.txt | awk ' gsub(/ /,""); imprimer 'Où
- gsub (signifie substitution globale) est une fonction de substitution
- / / représenter un espace blanc
- "" ne représente rien (coupe la ficelle)
La commande ci-dessus remplace tous les espaces (/ /) par rien ("").
Dans la capture d'écran suivante, vous pouvez voir que tous les espaces blancs, y compris les espaces blancs de début et de fin, ont été supprimés de la sortie.
Couper les espaces blancs en tête
Pour supprimer uniquement les espaces de début du fichier, dirigez la commande out of cat vers la commande awk, comme suit :
$ échantillon de chat.txt | awk ' sub(/^[ \t]+/, ""); imprimer 'Où
- sous est une fonction de substitution
- ^ représente le début de la chaîne
- [ \t]+ représente un ou plusieurs espaces
- "" ne représente rien (coupe la ficelle)
La commande ci-dessus remplace un ou plusieurs espaces au début de la chaîne (^[ \t]+ ) par rien ("") pour supprimer les premiers espaces blancs.
Dans la capture d'écran suivante, vous pouvez voir que tous les espaces blancs principaux ont été supprimés de la sortie.
Vous pouvez utiliser la commande suivante pour vérifier que la commande ci-dessus a supprimé les premiers espaces :
$ échantillon de chat.txt | awk ' sub(/^[ \t]+/, ""); imprimer ' | tr " " "*" |tr "\t" "&"
Dans la capture d'écran ci-dessous, il est clairement visible que seuls les premiers espaces ont été supprimés.
Couper les espaces blancs de fin
Pour supprimer uniquement les espaces de fin d'un fichier, dirigez la commande out of cat vers la commande awk, comme suit :
$ échantillon de chat.txt | awk ' sub(/[ \t]+$/, ""); imprimer 'Où
- sous est une fonction de substitution
- [ \t]+ représente un ou plusieurs espaces
- $ représente la fin de la chaîne
- "" ne représente rien (coupe la ficelle)
La commande ci-dessus remplace un ou plusieurs espaces à la fin de la chaîne ([ \t]+ $) par rien ( "") pour supprimer les espaces de fin.
Vous pouvez utiliser la commande suivante pour vérifier que la commande ci-dessus a supprimé les espaces de fin :
$ échantillon de chat.txt | awk ' sub(/[ \t]+$/, ""); imprimer ' | tr " " "*" | tr "\t" "&"À partir de la capture d'écran ci-dessous, il est clairement visible que les espaces blancs de fin ont été supprimés.
Couper les espaces blancs de début et de fin
Pour supprimer à la fois les espaces blancs de début et de fin d'un fichier, dirigez la commande out of cat vers la commande awk, comme suit :
$ échantillon de chat.txt | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); imprimer 'Où
- gsub est une fonction de substitution globale
- ^[ \t]+ représente les espaces blancs principaux
- [ \t]+$ représente les espaces de fin
- "" ne représente rien (coupe la ficelle)
La commande ci-dessus remplace à la fois les espaces de début et de fin (^[ \t]+ [ \t]+$) sans rien ("") pour les supprimer.
Pour déterminer si la commande ci-dessus a supprimé à la fois les espaces blancs de début et de fin dans le fichier, utilisez la commande suivante :
$ échantillon de chat.txt | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); imprimer ' |tr " " "*" | tr "\t" "&"
À partir de la capture d'écran ci-dessous, il est clairement visible que les espaces blancs de début et de fin ont été supprimés, et seuls les espaces blancs entre les chaînes restent.
Remplacer plusieurs espaces par un seul espace
Pour remplacer plusieurs espaces par un seul espace, dirigez la commande out of cat vers la commande awk, comme suit :
$ échantillon de chat.txt | awk ' gsub(/[ ]+/," "); imprimer 'Où:
- gsub est une fonction de substitution globale
- [ ]+ représente un ou plusieurs espaces
- " " représente un espace blanc
La commande ci-dessus remplace plusieurs espaces blancs ([ ]+) par un seul espace blanc (" ").
Vous pouvez utiliser la commande suivante pour vérifier que la commande ci-dessus a remplacé les espaces multiples par les espaces :
$ échantillon de chat.txt | awk ' sub(/[ \t]+$/, ""); imprimer ' | | tr " " "*" | tr "\t" "&"Il y avait plusieurs espaces dans notre exemple de fichier. Comme vous pouvez le voir, plusieurs espaces blancs dans l'exemple.txt ont été remplacés par un seul espace blanc à l'aide de la commande awk.
Pour couper les espaces dans uniquement les lignes contenant un caractère spécifique, comme une virgule, deux points ou un point-virgule, utilisez la commande awk avec le -F séparateur d'entrée.
Par exemple, ci-dessous est notre exemple de fichier qui contient des espaces dans chaque ligne.
Pour supprimer les espaces uniquement sur les lignes contenant une virgule (,), la commande serait la suivante :
$ chat échantillon1.txt | awk -F, '/,/gsub(/ /,""); imprimer'Où (-F,) est le séparateur de champ d'entrée.
La commande ci-dessus ne supprimera et n'affichera que les espaces blancs des lignes contenant le caractère spécifié (,). Le reste des lignes ne sera pas affecté.
Conclusion
C'est tout ce que vous devez savoir pour supprimer les espaces dans vos données à l'aide de la commande awk. La suppression des espaces de vos données peut être nécessaire pour plusieurs raisons différentes. Quelle que soit la raison, vous pouvez facilement couper tous les espaces dans vos données à l'aide des commandes décrites dans cet article. Vous pouvez même couper les espaces blancs de début ou de fin, couper les espaces blancs de début et de fin et remplacer les espaces multiples par un seul espace avec la commande awk.