PB Suppression d'espace

Résolu
Bonjour,

Me revoilà avec une ligne de commande que certain ici mon aidé à l'élaborer pour supprimer les blancs dans des champs d'un fichier plat.
Mon problème c'est que cette ligne de commande laisse parfois des espaces et je sais pas trop pourquoi ??

voici mon fichier au départ :

0000290;20130401;COTIPAT2;      1296,86;R  
0000290;20130401;HMENS   ;       151,67;R  
0000290;20130401;SALBRUT ;      2866,78;R  

voici mon fichier après :

0000290;20130401;COTIPAT2;1296,86;R 
0000290;20130401;HMENS;151,67;R     
0000290;20130401;SALBRUT ;2866,78;R 


Sur la 3eme ligne il laisse un espace après le "SALBRUT"

la commande est la suivante :

cat $SIGACS/file/PSPAPREM.P | \                        
sed 's/ \{2,\}//g' >> $SIGACS/file/montant-Premium.txt 


Encore une fois, merci d'avance.

3 réponses

  1. Bonjour à Tous,

    Bon j'ai essayé les méthodes et la n°4 fonctionne impéc !! ;-)
    et pour te répondre à ta question Zip31 :

    uname -a => AIX u203esg2 3 5 000EC30AD400
    echo $SHELL => /usr/bin/ksh

    Sur d'autre post on avait déjà vu qu'avec ma version certain commande n'était pas reconnu ou en tout cas réagissais pas forcement comme voulu ( cas du "uniq").

    En tout cas merci encore à vous tous !!!
    bonne semaine :-)
    1. j'ai essayer ta solution Zipe31 mais ça ne fonctionne pas voila le résultat :

      0000290;20130401;COTIPAT2;      1296,86;R  
      0000290;20130401;HMENS   ;       151,67;R  
      0000290;20130401;SALBRUT ;      2866,78;R
      1. Contributeur
        Bizarre, chez moi ça marche bien et avec plusieurs solutions...

        $ cat plop 
        0000290;20130401;COTIPAT2;      1296,86;R  
        0000290;20130401;HMENS   ;       151,67;R  
        0000290;20130401;SALBRUT ;      2866,78;R
        
        $ sed 's/ \+//g' plop 
        0000290;20130401;COTIPAT2;1296,86;R
        0000290;20130401;HMENS;151,67;R
        0000290;20130401;SALBRUT;2866,78;R
        
        $ sed 's/\s\+//g' plop 
        0000290;20130401;COTIPAT2;1296,86;R
        0000290;20130401;HMENS;151,67;R
        0000290;20130401;SALBRUT;2866,78;R
        
        $ sed 's/ \{1,\}//g' plop 
        0000290;20130401;COTIPAT2;1296,86;R
        0000290;20130401;HMENS;151,67;R
        0000290;20130401;SALBRUT;2866,78;R
        
        $ tr -d ' ' < plop 
        0000290;20130401;COTIPAT2;1296,86;R
        0000290;20130401;HMENS;151,67;R
        0000290;20130401;SALBRUT;2866,78;R
        
        $

        Sue quel système es-tu ?
        Quelle version de "sed" ?
        Ton fichier est sous quel format (Unix ou Windows) ?
    2. Contributeur
      Salut,

      C'est normal ton expression cherche au minimum 2 espaces ou plus et dans ta 3e ligne il n'y en a qu'un après "SALBRUT" ;-\

      Essaye comme ça :

       sed 's/ \+//g'