Comment réduire avec awk, la largeur d'un champ contenu dans un enregistrement

Résolu
zigroful Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
zigroful Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Je suis sous Ubuntu 18.04 LTS et essaie d'apprendre à me servir de awk.
J'ai un fichier csv de ce type:

a1_____       ; ______  a2;a3 _______________________  ; _____________  a4  ;  a5
b1_________ ; ___________________________ b2;___ b3; _____________________ b4 ;__ b5


et ainsi de suite sur 300 enregistrements.
(je renvoie le tableau ci-dessus car les espaces sont écrasés lorsque j'envoie le message. Je les ai donc remplacés par des tirets, mais en réalité, il s'agit d'espaces blancs !)
J'appelle champs ce qui est entouré de points-virgules (ici 5 champs et deux enregistrements)

Les a_i et b_i étant des chaines de caractères alphanumériques de longueurs variables.

Comment faire pour que chaque champ soit bien bordé, càd de sorte que la chaine alphanumérique soit systématiquement entourée d'un seul espace après et avant chaque point-virgule, càd:
a1 ; a2 ; a3 ; a4 ; a5
b1; b2 ; b3 ; b4 ; b5
etc...

J'ai cherché dans toute la documentation et n'ai pas trouvé de moyen de le faire. Quelqu'un pourrait-il m'aider ?

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

awk est une obligation ?

Parce qu'avec sed c'est très simple :
$ cat f1
a1 ;       a2    ;   a3               ;   a4     ;  a5
b1   ;     b2      ;  b3    ;         b4    ;    b5


$ sed 's/  */ /g' f1
a1 ; a2 ; a3 ; a4 ; a5
b1 ; b2 ; b3 ; b4 ; b5

1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Avec awk :

$ awk 'BEGIN{FS=OFS=";"} /;/{gsub(/  */, " ", $0); print} ' f1
a1 ; a2 ; a3 ; a4 ; a5
b1 ; b2 ; b3 ; b4 ; b5
0
zigroful
 
Allons-y avec sed ! Non awk n'est pas une obligation. J'étudie les deux langages, actuellement
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Solution avec awk ici ;-)
0
zigroful Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention  
 
GRAND MERCI
0