Suppimer des espace sur un champ contenant des "|" unix

Résolu
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
 JsuisNul - 17 févr. 2024 à 14:09

Bonjour,

Je souhaite supprimer des espace dans un champs qui contient des "|"

$ ligne=' toto,,Hello |Revoir  |test,TTTT,michael '
$ echo "'$(echo "${ligne}" |sed 's/ \|/\|/g'
Résultat attendu => ' toto,,Hello|Revoir|test,TTTT,michael '

J'ai essayé le sed ci-dessus mais au lieu de supprimer les espaces cela met chaque caractère entre pipe 

si quelqu'un veut bien me donner la bonne syntaxe, je suis preneur.

Merci d'avance pour votre aide.

J.

4 réponses

dubcek Messages postés 18788 Date d'inscription   Statut Contributeur Dernière intervention   5 632
 

hello

$ ligne=' toto,,Hello |Revoir  |test,TTTT,michael '
$ sed -r 's/ +| +//g' <<<"$ligne"
toto,,Hello|Revoir|test,TTTT,michael
1
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 

Merci Dubcek

Je viens de tester et ça fonctionne comme souhaité.

Merci encore ! Sujet résolu !

0
dubcek Messages postés 18788 Date d'inscription   Statut Contributeur Dernière intervention   5 632
 

correction

mon code supprime tout les espaces

pour supprimer les espaces avant et/ou après |

$ sed -r 's/[ ]*\|[ ]*/|/g' <<<"$ligne"
0
JsuisNul
 

Bonjour dubcek,

Merci pour la précision même si le premier code fonctionne comme je le souhaite pour moi. 

Bon week-end 

0