Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4772 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [shell] remplacement d'espaces

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell] remplacement d'espaces

n°992514
fgmania
Posté le 24-02-2005 à 15:26:46  profilanswer
 

Bonjour,
 
J'ai un fichier texte dans lequel je veux enlever les espaces successifs ainsi que les espaces en fin de ligne.
Ex : Ceci     est un test    .
Doit se transformer en : Ceci est un test.
 
J'arrive à enlever tous les espace mais je n'arrive pas à en laisser juste 1.
J'ai essayé ça :

Citation :

sed -e 's/[ ]+/ /g' -e 's/[ ]$//g' test.toto


Mais ça ne marche pas.
Comment faire?

mood
Publicité
Posté le 24-02-2005 à 15:26:46  profilanswer
 

n°992536
Sve@r
Posté le 24-02-2005 à 15:49:35  profilanswer
 

fgmania a écrit :

Bonjour,
 
J'ai un fichier texte dans lequel je veux enlever les espaces successifs ainsi que les espaces en fin de ligne.
Ex : Ceci     est un test    .
Doit se transformer en : Ceci est un test.
 
J'arrive à enlever tous les espace mais je n'arrive pas à en laisser juste 1.
J'ai essayé ça :

Citation :

sed -e 's/[ ]+/ /g' -e 's/[ ]$//g' test.toto


Mais ça ne marche pas.
Comment faire?


 

Code :
  1. sed -e "s/  \{1,}/ /g" test.toto

(attention, il y a deux espaces entre le "s/" et le "\{" et un espace entre le "}/" et le "/g" )
 
Ca signifie "remplacer tout espace suivi d'un espace répété 1 ou plusieurs fois par un espace unique


Message édité par Sve@r le 24-02-2005 à 15:50:15
n°992537
Taz
bisounours-codeur
Posté le 24-02-2005 à 15:50:14  profilanswer
 

beur beurk beurk
 
man tr
 
tr -s

n°992542
fgmania
Posté le 24-02-2005 à 15:59:30  profilanswer
 

Ha oui effectivement tr -s ça a l'air d'être pas mal (quand on connait ;) )
Par contre une question par rapport aux expressions régulières et à sed : si je veux dire 1 fois ou plus, je suis obligée de mettre {1,} ou je peut mettre + (j'ai pas vu + dans le man)?

n°992544
Sve@r
Posté le 24-02-2005 à 16:02:49  profilanswer
 

fgmania a écrit :

Ha oui effectivement tr -s ça a l'air d'être pas mal (quand on connait ;) )


Oui, le gros pb de Taz c'est qu'il croit qu'on doit tout connaître et que tout ce qui n'est pas fait à sa façon c'est à chier (cf http://forum.hardware.fr/hardwaref [...] 7544-1.htm)

fgmania a écrit :

Par contre une question par rapport aux expressions régulières et à sed : si je veux dire 1 fois ou plus, je suis obligée de mettre {1,} ou je peut mettre + (j'ai pas vu + dans le man)?


 
Tu veux le caractère "x" répété entre 3 et 12 fois

Code :
  1. x\{3,12\}


Tu veux le caractère "x" répété entre 3 et un nombre inconnu de fois

Code :
  1. x\{3,\}


Message édité par Sve@r le 24-02-2005 à 16:06:01
n°992545
fgmania
Posté le 24-02-2005 à 16:06:18  profilanswer
 

Je parlais pas de + pour dire plus grand mais du caractère + des expressions régulières qui veut dire entre 1 et l'infini (en fait qui a exactement la même signification que {1,})

n°992546
Taz
bisounours-codeur
Posté le 24-02-2005 à 16:09:33  profilanswer
 

désolé, mais tr c'est une commande de base, qu'on apprend avant sed. alors KISS, pas la peine de se lancer dans de longue expressions régulières. Mon intervention ici est concise et donne une bonne solution. Je vois pas quoi ajouter.

n°992552
fgmania
Posté le 24-02-2005 à 16:16:34  profilanswer
 

Ne vous battez pas ^^
Et merci pour TOUTES les réponses.
(je n'ai "appris" ni sed ni tr parce que lorsque je veux faire qq chose en shell je cherche sur google (connais pas shell à l'origine) et donc je ne connais que ce que google veut bien m'apprendre :|).

n°992553
Taz
bisounours-codeur
Posté le 24-02-2005 à 16:17:32  profilanswer
 

tu sais le shell, c'est rien d'autre qu'une syntaxe qui permet d'enchainer les commandes (programmes).

n°992569
Sve@r
Posté le 24-02-2005 à 16:25:28  profilanswer
 

Taz a écrit :

désolé, mais tr c'est une commande de base, qu'on apprend avant sed.


 
D'où tu sors cette théorie ? Ca ça dépend totalement du prof. Les commandes "tr" ou "sed" sont des commandes qui ont chacune une raison précise d'exister et une tâche précise à accomplir. Il n'y a aucune raison d'apprendre l'une ou de donner la préférence à l'une plutôt que l'autre.
 

Taz a écrit :

alors KISS, pas la peine de se lancer dans de longue expressions régulières. Mon intervention ici est concise et donne une bonne solution. Je vois pas quoi ajouter.


Oui, c'est vrai. Si en plus tu avais donné un exemple cela aurait pu faire plaisir à "fgmania" mais on peut pas demander aux dieux de trop se pencher sur les misères humaines :sarcastic:  
 
Maintenant, peut-être que "fgmania", en comprenant ma solution, pourra l'approfondir s'il a des expressions un peu plus complexes impossibles à traiter avec "tr"...


Message édité par Sve@r le 24-02-2005 à 16:27:08
mood
Publicité
Posté le 24-02-2005 à 16:25:28  profilanswer
 

n°992576
Sve@r
Posté le 24-02-2005 à 16:30:00  profilanswer
 

fgmania a écrit :

Ne vous battez pas ^^
Et merci pour TOUTES les réponses.


 
Les deux fonctionnent. Tu pourras éliminer tes espaces en trop avec "tr" en faisant

Code :
  1. cat toto.test |tr -s ' '


fgmania a écrit :

(je n'ai "appris" ni sed ni tr parce que lorsque je veux faire qq chose en shell je cherche sur google (connais pas shell à l'origine) et donc je ne connais que ce que google veut bien m'apprendre :|).


http://fr.lang.free.fr/cours/Shell_v1.2.doc

n°992595
Taz
bisounours-codeur
Posté le 24-02-2005 à 16:45:37  profilanswer
 

Sve@r a écrit :

Les deux fonctionnent. Tu pourras éliminer tes espaces en trop avec "tr" en faisant

Code :
  1. cat toto.test |tr -s ' '



 
useless cat of the week


je sais pas pourquoi mais direct ça paraît sérieux


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [shell] remplacement d'espaces

 

Sujets relatifs
[ Shell] Merge fichier[ Shell ] Obtenir la date du lendemain ?
Remplacer les espaces d'une chainetcsh Shell avec cygwin (pb avec espaces)
[Korn Shell] Manip de chaines[Shell/SCO] commande divvy
Combien de caractères maxi sur une ligne shell unix ???[shell]recuperer la valeur d'une variable dans une variabe
appelle une fonction du shell unix dans mawk 
Plus de sujets relatifs à : [shell] remplacement d'espaces


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)