|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour, On m'a soumis une question sed qui me laisse perplexe : "Comment remplacer une séquence d'espaces par un caractère (espace plus précisément)". Première idée de la personne requéreuse : -e 's/[ ]+/ /g' ou -e 's/[:space:]+/ /g' Marche pas du tout. On est parti sur : -e 's/[:space:][:space:]*/ /g' -e 's/[ ]\{1,\}/ /g' Mais je ne suis pas vraiment satisfait car je ne m'explique pas le pourquoi. Bon bin en relisant le man, je viens de tester avec -r et ça passe. [ ]+ ce n'est pas standard, ce serait étendu ??? FAb |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On 15 May 2006 14:57:34 +0200, FAb wrote:
> On m'a soumis une question sed qui me laisse perplexe : > "Comment remplacer une séquence d'espaces par un caractère (espace plus > précisément)". > > Première idée de la personne requéreuse : > -e 's/[ ]+/ /g' > ou -e 's/[:space:]+/ /g' > Marche pas du tout. > > On est parti sur : > -e 's/[:space:][:space:]*/ /g' > -e 's/[ ]\{1,\}/ /g' > > > Mais je ne suis pas vraiment satisfait car je ne m'explique pas le pourquoi. > > Bon bin en relisant le man, je viens de tester avec -r et ça passe. > [ ]+ ce n'est pas standard, ce serait étendu ??? + est un operateur des regexps etendues (ERE, comme dans awk ou grep -E). sed implemente les regexp basiques (BRE comme dans grep) s/[[:blank:]]\{1,\}/ /g est POSIX s/[ ][ ]*/ /g pour les sed qui ne reconnaissent pas cette syntaxe. [:space:] inclue toutes sortes de caracteres d'espacement comme le form feed (\f) ou le vertical tab (\v). -- Stephane |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Stephane Chazelas <stephane_chazelas@yahoo.fr> writes:
> On 15 May 2006 14:57:34 +0200, FAb wrote: > > Mais je ne suis pas vraiment satisfait car je ne m'explique pas le pourquoi. > > > > Bon bin en relisant le man, je viens de tester avec -r et ça passe. > > [ ]+ ce n'est pas standard, ce serait étendu ??? > > + est un operateur des regexps etendues (ERE, comme dans awk ou > grep -E). sed implemente les regexp basiques (BRE comme dans > grep) > > s/[[:blank:]]\{1,\}/ /g > > est POSIX > > s/[ ][ ]*/ /g > > pour les sed qui ne reconnaissent pas cette syntaxe. > > [:space:] inclue toutes sortes de caracteres d'espacement > comme le form feed (\f) ou le vertical tab (\v). Ok, merci pour tes lumières. ERE, BRE va falloir que je révise. FAb |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Le 15 mai, à 12:57, FAb papotait :
> On m'a soumis une question sed qui me laisse perplexe : > "Comment remplacer une séquence d'espaces par un caractère (espace plus > précisément)". Si sed n'est pas obligatoire, on a aussi : tr -s " " -- No fortunes found |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Loïc Restoux <lrestoux@free.fr> writes:
> Le 15 mai, à 12:57, FAb papotait : > > On m'a soumis une question sed qui me laisse perplexe : > > "Comment remplacer une séquence d'espaces par un caractère (espace plus > > précisément)". > > Si sed n'est pas obligatoire, on a aussi : > tr -s " " Il l'était (sur un système embarqué). Merci quand même. FAb |
|
![]() |
| Outils de la discussion | |
|
|