PB Suppression d'espace

Résolu/Fermé
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - Modifié par jipicy le 26/04/2013 à 17:56
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 29 avril 2013 à 10:20
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

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 avril 2013 à 18:00
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'

0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
Modifié par jipicy le 26/04/2013 à 18:37
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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 avril 2013 à 18:41
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) ?
0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
29 avril 2013 à 10:20
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 :-)
0