Introduction
Le système d'exploitation Linux offre des outils de traitement de texte puissants qui permettent aux utilisateurs de manipuler et de combiner efficacement des données issues de plusieurs fichiers. L'une de ces outils est la commande paste, qui fusionne les lignes de différents fichiers côte à côte. Cette capacité à combiner des données provenant de sources distinctes est essentielle pour l'analyse de données, la gestion de configuration et la génération de rapports.
Dans ce lab (atelier), vous apprendrez à utiliser la commande paste pour fusionner les lignes de différents fichiers de diverses manières. Vous explorerez la fonctionnalité de base de la commande, apprendrez à personnaliser la délimitation entre les colonnes fusionnées et comprendrez comment traiter les fichiers de manière séquentielle. Ces compétences sont fondamentales pour un traitement de données efficace dans les environnements Linux.
Utilisation de base de la commande paste
La commande paste dans Linux est utilisée pour fusionner horizontalement les lignes de plusieurs fichiers (fusion parallèle). Cela est particulièrement utile lorsque vous avez besoin de combiner des données liées stockées dans des fichiers séparés.
Commençons par nous déplacer dans le répertoire du projet où nous effectuerons toutes nos opérations :
cd ~/project
Maintenant, nous devons créer quelques fichiers d'exemple pour démontrer la commande paste. Tout d'abord, créons un fichier contenant des données de température :
echo "Temperature" > temperatures.txt
Cette commande utilise echo pour écrire le mot "Temperature" dans un fichier nommé temperatures.txt. Le symbole > redirige la sortie de la commande echo vers le fichier, en le créant s'il n'existe pas ou en l'écrasant s'il existe déjà.
Ensuite, créons un autre fichier avec diverses conditions atmosphériques :
echo -e "Pressure\nHumidity\nWind_Speed" > conditions.txt
Dans cette commande, nous utilisons l'option -e avec echo pour interpréter les caractères d'échappement. Le \n représente un caractère de nouvelle ligne, donc cette commande crée un fichier avec trois lignes : "Pressure", "Humidity" et "Wind_Speed".
Vérifions le contenu des deux fichiers pour confirmer qu'ils ont été créés correctement :
cat temperatures.txt
Cela devrait afficher :
Temperature
Maintenant, vérifions le fichier des conditions :
cat conditions.txt
Cela devrait afficher :
Pressure
Humidity
Wind_Speed
Maintenant que nos fichiers sont prêts, utilisons la commande paste pour les fusionner côte à côte :
paste temperatures.txt conditions.txt
La sortie devrait ressembler à ceci :
Temperature Pressure
Humidity
Wind_Speed
Notez que la commande paste a fusionné les fichiers ligne par ligne, en plaçant le contenu de temperatures.txt avant le contenu de conditions.txt sur chaque ligne. Le caractère de tabulation est utilisé comme délimiteur par défaut entre les colonnes.
Étant donné que temperatures.txt n'a qu'une seule ligne, les lignes restantes de conditions.txt sont affichées avec un espace vide là où le contenu de temperatures.txt devrait être.
Cette utilisation de base de paste montre comment vous pouvez combiner des données de différents fichiers horizontalement, ce qui est utile pour créer des données tabulaires à partir de fichiers de colonnes séparés.
Utilisation de délimiteurs personnalisés avec la commande paste
Par défaut, la commande paste utilise un caractère de tabulation comme délimiteur entre les colonnes fusionnées. Cependant, vous pouvez spécifier un autre délimiteur en utilisant l'option -d, ce qui est utile pour créer des fichiers CSV, des données formatées de manière personnalisée ou préparer des données pour d'autres outils.
Créons un nouveau fichier avec des informations de date pour démontrer l'utilisation de délimiteurs personnalisés :
echo -e "Date\n2023-04-01\n2023-04-02\n2023-04-03" > dates.txt
Cela crée un fichier avec quatre lignes : l'en-tête "Date" et trois dates.
Vérifions le contenu de ce nouveau fichier :
cat dates.txt
Vous devriez voir :
Date
2023-04-01
2023-04-02
2023-04-03
Maintenant, fusionnons les trois fichiers en utilisant une virgule comme délimiteur au lieu de la tabulation par défaut :
paste -d ',' temperatures.txt conditions.txt dates.txt
L'option -d suivie d'une virgule spécifie que nous voulons utiliser une virgule comme délimiteur entre les colonnes. La commande fusionnera les trois fichiers côte à côte avec des virgules séparant les valeurs de chaque fichier.
La sortie devrait ressembler à ceci :
Temperature,Pressure,Date
,Humidity,2023-04-01
,Wind_Speed,2023-04-02
,,2023-04-03
Remarquez qu'il y a des valeurs vides dans la première colonne pour les lignes 2 à 4 car temperatures.txt n'a qu'une seule ligne. De même, il y a une valeur vide dans la deuxième colonne pour la ligne 4 car conditions.txt n'a que trois lignes.
Vous pouvez utiliser n'importe quel caractère comme délimiteur. Par exemple, essayons d'utiliser un deux-points :
paste -d ':' temperatures.txt conditions.txt dates.txt
La sortie devrait être :
Temperature:Pressure:Date
:Humidity:2023-04-01
:Wind_Speed:2023-04-02
::2023-04-03
Cette flexibilité dans le choix des délimiteurs fait de la commande paste un outil polyvalent pour formater des données afin de répondre à des exigences spécifiques, comme préparer des données pour l'importation dans des bases de données ou des tableurs.
Fusion séquentielle avec la commande paste
Jusqu'à présent, nous avons utilisé la commande paste pour fusionner des fichiers horizontalement, en plaçant le contenu de différents fichiers côte à côte. Cependant, paste peut également fusionner des fichiers de manière séquentielle (les uns après les autres) en utilisant l'option -s. Cela est utile lorsque vous souhaitez convertir plusieurs lignes d'un fichier en une seule ligne, ou lorsque vous voulez traiter chaque fichier séparément.
Démontrons la fusion séquentielle en utilisant les fichiers que nous avons déjà créés :
paste -s temperatures.txt
L'option -s indique à paste de fusionner séquentiellement les lignes de chaque fichier avant de passer au fichier suivant. Étant donné que temperatures.txt n'a qu'une seule ligne, la sortie peut ne pas sembler différente :
Temperature
Essayons avec le fichier conditions.txt, qui a plusieurs lignes :
paste -s conditions.txt
La sortie devrait ressembler à ceci :
Pressure Humidity Wind_Speed
Remarquez que toutes les lignes de conditions.txt ont été fusionnées en une seule ligne, avec des tabulations séparant les valeurs. Cela diffère du comportement par défaut de paste, qui fusionnerait les lignes de différents fichiers.
Vous pouvez également utiliser l'option -d avec -s pour spécifier un délimiteur personnalisé pour la fusion séquentielle :
paste -s -d ',' conditions.txt
La sortie devrait être :
Pressure,Humidity,Wind_Speed
Lorsque vous fournissez plusieurs fichiers à paste -s, il traite chaque fichier séparément, produisant une ligne de sortie distincte pour chaque fichier :
paste -s temperatures.txt conditions.txt dates.txt
La sortie devrait être :
Temperature
Pressure Humidity Wind_Speed
Date 2023-04-01 2023-04-02 2023-04-03
Comme vous pouvez le voir, la première ligne est le contenu fusionné de temperatures.txt (qui n'est qu'une seule ligne), la deuxième ligne est le contenu fusionné de conditions.txt, et la troisième ligne est le contenu fusionné de dates.txt.
Vous pouvez également combiner les options -s et -d pour spécifier un délimiteur différent pour chaque fichier. Par exemple :
paste -s -d ',:\n' temperatures.txt conditions.txt dates.txt
L'option -d ',:\n' spécifie trois délimiteurs : une virgule pour le premier fichier, un deux-points pour le deuxième fichier, et un saut de ligne pour le troisième fichier (qui passe simplement à la ligne suivante). La sortie devrait être :
Temperature
Pressure:Humidity:Wind_Speed
Date 2023-04-01 2023-04-02 2023-04-03
La fusion séquentielle avec paste est une fonctionnalité puissante qui peut transformer la disposition des données, la rendant adaptée à différents besoins de traitement.
Résumé
Dans ce laboratoire (lab), vous avez appris à utiliser la commande paste sous Linux pour fusionner les lignes de plusieurs fichiers de différentes manières :
- Utilisation de base de
pastepour fusionner des fichiers horizontalement avec le délimiteur de tabulation par défaut - Utilisation de l'option
-dpour spécifier des délimiteurs personnalisés lors de la fusion de fichiers - Utilisation de l'option
-spour la fusion séquentielle afin de combiner les lignes à l'intérieur d'un fichier
Ces compétences sont fondamentales pour le traitement des données et la manipulation de texte dans les environnements Linux. La commande paste est particulièrement utile pour :
- Créer des données tabulaires à partir de fichiers de colonnes séparées
- Formater des données pour l'importation dans des bases de données ou des tableurs
- Convertir des données de mise en page verticale à horizontale et vice versa
- Préparer des données pour un traitement ultérieur avec d'autres commandes Linux
En maîtrisant la commande paste, vous avez ajouté un outil puissant à votre boîte à outils de ligne de commande Linux, qui vous aidera à manipuler et à traiter efficacement les données textuelles.



