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

Résolu
JsuisNul Messages postés 137 Statut Membre -  
 JsuisNul -

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

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    hello

    $ ligne=' toto,,Hello |Revoir  |test,TTTT,michael '
    $ sed -r 's/ +| +//g' <<<"$ligne"
    toto,,Hello|Revoir|test,TTTT,michael
    
    1
  2. JsuisNul Messages postés 137 Statut Membre 1
     

    Merci Dubcek

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

    Merci encore ! Sujet résolu !

    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    correction

    mon code supprime tout les espaces

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

    $ sed -r 's/[ ]*\|[ ]*/|/g' <<<"$ligne"
    0
  4. 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