Fusion de lignes Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 98%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

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 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 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 :

  1. Utilisation de base de paste pour fusionner des fichiers horizontalement avec le délimiteur de tabulation par défaut
  2. Utilisation de l'option -d pour spécifier des délimiteurs personnalisés lors de la fusion de fichiers
  3. Utilisation de l'option -s pour 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.