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

Résolu
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 14 févr. 2024 à 16:50
 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.

A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
14 févr. 2024 à 17:05

hello

$ ligne=' toto,,Hello |Revoir  |test,TTTT,michael '
$ sed -r 's/ +| +//g' <<<"$ligne"
toto,,Hello|Revoir|test,TTTT,michael
1
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
Modifié le 15 févr. 2024 à 10:57

Merci Dubcek

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

Merci encore ! Sujet résolu !

0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 févr. 2024 à 11:52

correction

mon code supprime tout les espaces

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

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

Bonjour dubcek,

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

Bon week-end 

0