remplacement d'espaces [shell] - Shell/Batch - Programmation
Marsh Posté le 24-02-2005 à 15:49:35
fgmania a écrit : Bonjour,
|
Code :
|
(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
Marsh Posté le 24-02-2005 à 15:59:30
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)?
Marsh Posté le 24-02-2005 à 16:02:49
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 :
|
Tu veux le caractère "x" répété entre 3 et un nombre inconnu de fois
Code :
|
Marsh Posté le 24-02-2005 à 16:06:18
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,})
Marsh Posté le 24-02-2005 à 16:09:33
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.
Marsh Posté le 24-02-2005 à 16:16:34
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 :|).
Marsh Posté le 24-02-2005 à 16:17:32
tu sais le shell, c'est rien d'autre qu'une syntaxe qui permet d'enchainer les commandes (programmes).
Marsh Posté le 24-02-2005 à 16:25:28
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
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"...
Marsh Posté le 24-02-2005 à 16:30:00
fgmania a écrit : Ne vous battez pas ^^ |
Les deux fonctionnent. Tu pourras éliminer tes espaces en trop avec "tr" en faisant
Code :
|
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
Marsh Posté le 24-02-2005 à 16:45:37
Sve@r a écrit : Les deux fonctionnent. Tu pourras éliminer tes espaces en trop avec "tr" en faisant
|
useless cat of the week
je sais pas pourquoi mais direct ça paraît sérieux
Marsh Posté le 24-02-2005 à 15:26:46
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 :
sed -e 's/[ ]+/ /g' -e 's/[ ]$//g' test.toto
Mais ça ne marche pas.
Comment faire?