|
|
Paste S and X |
|
Accueil Journal de mission Course à pied Ski de randonnée Alpinisme Voile Ecrits Diaporamas Programmation Carnet des invités |
Accueil > Programmation > Paste S and X Jonction ligne par ligne d'enregistrements S et X du SPS ButJoindre les fichiers S et X en une seule entité facile à manipuler. Téléchargementpastesx.pl : Clic droit, "save as", sauvegarder ainsi la cible du lien en tant que pastesx.pl, rendre exécutable et placer dans le $path, typiquement sous /usr/local/bin, sur une machine de type xw84pt1. Licence: GPL. MéthodeEtant donné ce fichier S de 4 sources; xw84pt1% cat 1.s01
S 7188.00 2304.00 1A1 5.0 0 16.5 287121.5 3115850.6 0.7260074336
S 7192.00 2304.00 1A1 5.0 0 16.6 287132.8 3115899.4 0.7260074404
S 7196.00 2304.00 1A1 5.0 0 16.8 287144.1 3115948.1 0.7260074432
S 7200.00 2304.00 1A1 5.0 0 16.9 287155.3 3115996.6 0.7260074500
Et ce fichier X correspondant; xw84pt1% cat 1.x01
X 2558 2111 7188.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2111 7188.00 2304.001 541 10802 7278.00 2240.00 2509.001
X 2558 2211 7192.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2211 7192.00 2304.001 541 10802 7278.00 2240.00 2509.001
X 2558 2311 7196.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2311 7196.00 2304.001 541 10802 7278.00 2240.00 2509.001
X 2558 2411 7200.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2411 7200.00 2304.001 541 10802 7278.00 2240.00 2509.001
On peut disposer ces 2 fichiers côte-à-côte ainsi; xw84pt1% pastesx.pl 1.s01 1.x01 > 1.sx01
Ce fichier "sx" résultant étant constitué de lignes de 3 fois 80 caractères, il est quelque peu difficile de l'afficher ici. J'utilise ainsi pour ce faire une petite parade en imprimant les caractères 1 à 20, 71 à 90 et 161 à 180 de chaque lignes en utilisant la fonction substr() de awk; xw84pt1% awk '{ printf ("%s .. %s .. %s\n", substr($0,1,20), substr($0,71,20), substr($0,161,20))}' 1.sx01
S 7188.00 2304.0 .. 7260074336X 2558 .. X 2558 2111
S 7192.00 2304.0 .. 7260074404X 2558 .. X 2558 2211
S 7196.00 2304.0 .. 7260074432X 2558 .. X 2558 2311
S 7200.00 2304.0 .. 7260074500X 2558 .. X 2558 2411
On aura compris qu'à la dernière colonne du S, on ne passe pas sur une nouvelle ligne, mais qu'on passe plutôt à la première ligne du X correspondant. En fait, on change de ligne seulement lors du changement de record, satisfaisant cette condition; information d'un tir sur une seule ligne. On peut aussi utiliser la fonction "fold" afin d'enrouler chaque ligne sur 80 caractères; xw84pt1% fold -w 80 1.sx01
S 7188.00 2304.00 1A1 5.0 0 16.5 287121.5 3115850.6 0.7260074336
X 2558 2111 7188.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2111 7188.00 2304.001 541 10802 7278.00 2240.00 2509.001
S 7192.00 2304.00 1A1 5.0 0 16.6 287132.8 3115899.4 0.7260074404
X 2558 2211 7192.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2211 7192.00 2304.001 541 10802 7278.00 2240.00 2509.001
S 7196.00 2304.00 1A1 5.0 0 16.8 287144.1 3115948.1 0.7260074432
X 2558 2311 7196.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2311 7196.00 2304.001 541 10802 7278.00 2240.00 2509.001
S 7200.00 2304.00 1A1 5.0 0 16.9 287155.3 3115996.6 0.7260074500
X 2558 2411 7200.00 2304.001 1 5402 7262.00 2240.00 2509.001
X 2558 2411 7200.00 2304.001 541 10802 7278.00 2240.00 2509.001
Avec un éditeur ou à l'aide d'un autre script, puisqu'ils sont disposés sur une seule ligne, il est aisé de manipuler, déplacer ou supprimer les records de ce "sx" sans craindre de disjoindre un enregistrement S des X correspondants. L'édition ainsi réalisé, on peut aisément reséparer les S et les X. Par exemple; xw84pt1% fold -w 80 1.sx01 | awk '/^S/' S 7188.00 2304.00 1A1 5.0 0 16.5 287121.5 3115850.6 0.7260074336 S 7192.00 2304.00 1A1 5.0 0 16.6 287132.8 3115899.4 0.7260074404 S 7196.00 2304.00 1A1 5.0 0 16.8 287144.1 3115948.1 0.7260074432 S 7200.00 2304.00 1A1 5.0 0 16.9 287155.3 3115996.6 0.7260074500 xw84pt1% fold -w 80 1.sx01 | awk '/^X/' X 2558 2111 7188.00 2304.001 1 5402 7262.00 2240.00 2509.001 X 2558 2111 7188.00 2304.001 541 10802 7278.00 2240.00 2509.001 X 2558 2211 7192.00 2304.001 1 5402 7262.00 2240.00 2509.001 X 2558 2211 7192.00 2304.001 541 10802 7278.00 2240.00 2509.001 X 2558 2311 7196.00 2304.001 1 5402 7262.00 2240.00 2509.001 X 2558 2311 7196.00 2304.001 541 10802 7278.00 2240.00 2509.001 X 2558 2411 7200.00 2304.001 1 5402 7262.00 2240.00 2509.001 X 2558 2411 7200.00 2304.001 541 10802 7278.00 2240.00 2509.001 On pourra bien sûr utiliser la fonction de redirection d'unix afin de sauvegarder ces nouvelles informations en deux nouveaux S et X. xw84pt1% xw84pt1% TéléchargementNotes |
|
|
Tous droits réservés © 2003-2006 Gaétan Martineau |