[Résolu] ajouter des espaces dans un csv avec sed

ajouter des espaces dans un csv avec sed [Résolu] - Shell/Batch - Programmation

Marsh Posté le 09-12-2016 à 12:07:23    

Hello,
 
Truc tout con, mais je trouve pas :-)
 
j'ai un csv avec point virgule comme séparateur
 
je veux remplacer vide par des espaces. C'est à dire que ;; devient ; ;  . Et donc aussi que ;;; devient ; ; ; . C'est sur ce 2eme exemple que a fonctionne pas :
 
echo \";;;\" | sed 's/;;/; ;/g'  [size=2][/size]
; ;;
 
 
Une idée ?
 
ca peut etre autre chose que SED, mais pas un truc trop lent.


Message édité par PierreC le 09-12-2016 à 14:47:09

---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 09-12-2016 à 12:07:23   

Reply

Marsh Posté le 09-12-2016 à 12:28:47    

ok trouvé...  
 
je double le sed ,c'est beurk mais ca fonctionne :  
 


echo ";toto;;;;;;" | sed 's/;;/; ;/g' | sed 's/;;/; ;/g'
;toto; ; ; ; ; ;


Message édité par PierreC le 09-12-2016 à 12:29:01

---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 09-12-2016 à 13:41:13    

Bonjour !
 
Je pense que c'est dû au fait qu'il ne peut utiliser 2 fois le même caractère pour sa recherche : si il trouve ';;;;', il va remplacer les deux premiers ';;' par '; ;', puis passer aux caractères suivants, soit les deux ";;" suivants, qu'il va remplacer par "; ;", ce qui, au final, nous donne "; ;; ;".
 
Le fait de le faire deux fois corrige ce problème.
 
Il y a peut-être une option ou une astuce pour contourner le fonctionnement par défaut ...
 
Bonne continuation !


---------------
On n'est jamais très fort pour ce calcul !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed