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.