> -----Message d'origine----- > De : zelos 414 [mailto:] > Envoyé : jeudi 20 décembre 2007 11:02 > À : Debianfr List > Objet : [SHELL] remplacer un caractère dans une sous-chaine > > Bonjour la liste, > > > Je me heurte depuis quelques temps à un souci de substitution > de caractère dans une sous-chaine. > > Voici la chaîne d'origine: > > type[TEST] date[Sun Dec 16 15:45:53 CET 2007] > description[permission denied] level[critical] > > Quelquefois, je la reçois sous cette forme (remarquez qu'un > espace s'est inséré dans "perm ission" et "cri tical") : > > type[TEST] date[Sun Dec 16 15:45:53 CET 2007] > description[perm ission denied] level[cri tical] > > J'aimerai donc supprimer tous les espaces ' ' contenus entre > crochets SAUF dans ceux précédés de 'date' ou 'creationDate' > > Je pense que sed peut suffir mais je n'arrive pas à trouver. > > En effet: > > echo "description[perm ission denied] " | sed -e 's/[.* > .*]/[.*_.*]/g' > > et > > tr ' ' '_' > > ne sont pas corrects. > > Auriez-vous une idée? > > Merci. > > Zelos > >
Pourquoi n'utilises tu pas un outil comme le perl qui est fait pour trait er des chaines de caractère ?
Je ne connais pas perl et tout le reste du script est en shell...
Le 20/12/07, Guillaume Coeugnet<gcoeugnet@partner.auchan.com> a écrit :
> -----Message d'origine-----
> De : zelos 414 [mailto:zelos414@gmail.com]
> Envoyé : jeudi 20 décembre 2007 11:02
> À : Debianfr List
> Objet : [SHELL] remplacer un caractère dans une sous-chaine
>
> Bonjour la liste,
>
>
> Je me heurte depuis quelques temps à un souci de substitution
> de caractère dans une sous-chaine.
>
> Voici la chaîne d'origine:
>
> type[TEST] date[Sun Dec 16 15:45:53 CET 2007]
> description[permission denied] level[critical]
>
> Quelquefois, je la reçois sous cette forme (remarquez qu'un
> espace s'est inséré dans "perm ission" et "cri tical") :
>
> type[TEST] date[Sun Dec 16 15:45:53 CET 2007]
> description[perm ission denied] level[cri tical]
>
> J'aimerai donc supprimer tous les espaces ' ' contenus entre
> crochets SAUF dans ceux précédés de 'date' ou 'creationDate'
>
> Je pense que sed peut suffir mais je n'arrive pas à trouver.
>
> En effet:
>
> echo "description[perm ission denied] " | sed -e 's/[.*
> .*]/[.*_.*]/g'
>
> et
>
> tr ' ' '_'
>
> ne sont pas corrects.
>
> Auriez-vous une idée?
>
> Merci.
>
> Zelos
>
>
Pourquoi n'utilises tu pas un outil comme le perl qui est fait pour trait er
des chaines de caractère ?
Je ne connais pas perl et tout le reste du script est en shell...
> -----Message d'origine----- > De : zelos 414 [mailto:] > Envoyé : jeudi 20 décembre 2007 11:02 > À : Debianfr List > Objet : [SHELL] remplacer un caractère dans une sous-chaine > > Bonjour la liste, > > > Je me heurte depuis quelques temps à un souci de substitution > de caractère dans une sous-chaine. > > Voici la chaîne d'origine: > > type[TEST] date[Sun Dec 16 15:45:53 CET 2007] > description[permission denied] level[critical] > > Quelquefois, je la reçois sous cette forme (remarquez qu'un > espace s'est inséré dans "perm ission" et "cri tical") : > > type[TEST] date[Sun Dec 16 15:45:53 CET 2007] > description[perm ission denied] level[cri tical] > > J'aimerai donc supprimer tous les espaces ' ' contenus entre > crochets SAUF dans ceux précédés de 'date' ou 'creationDate' > > Je pense que sed peut suffir mais je n'arrive pas à trouver. > > En effet: > > echo "description[perm ission denied] " | sed -e 's/[.* > .*]/[.*_.*]/g' > > et > > tr ' ' '_' > > ne sont pas corrects. > > Auriez-vous une idée? > > Merci. > > Zelos > >
Pourquoi n'utilises tu pas un outil comme le perl qui est fait pour trait er des chaines de caractère ?
Je ne connais pas perl et tout le reste du script est en shell...
Daniel Caillibaud
zelos 414 a écrit :
echo "description[perm ission denied] " | sed -e 's/[.* .*]/[.*_.*]/g'
Tu ne peux pas mettre de .* dans la chaine de substitution, tu dois utiliser les références arrières
echo "description[perm ission denied] " | sed -e 's/[(.*) (.*)]/[1_2]/g'
marchera mieux (un peu, car ça ne substitue que la derniere espace située entre crochet, le .* est gourmand).
marche très bien, mais tu n'as pas de regexp pour trier tes espaces à substituer.
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
zelos 414 a écrit :
echo "description[perm ission denied] " | sed -e 's/[.* .*]/[.*_.*]/g'
Tu ne peux pas mettre de .* dans la chaine de substitution, tu dois utiliser les références arrières
echo "description[perm ission denied] " | sed -e 's/[(.*) (.*)]/[1_2]/g'
marchera mieux (un peu, car ça ne substitue que la derniere espace située entre crochet, le .* est gourmand).
marche très bien, mais tu n'as pas de regexp pour trier tes espaces à substituer.
--
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
marche très bien, mais tu n'as pas de regexp pour trier tes espaces à substituer.
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
en clair, on teste les quatre caractères avant le crochet : â soit ce nâest pas d (ou D) ; â soit câest d (ou D) et, â pas suivi dâun a ; â suivi dâun a et, â pas suivi dâun t ; â suivi dâun t mais pas dâun e.
en clair, on teste les quatre caractères avant le crochet :
â soit ce nâest pas d (ou D) ;
â soit câest d (ou D) et,
â pas suivi dâun a ;
â suivi dâun a et,
â pas suivi dâun t ;
â suivi dâun t mais pas dâun e.
en clair, on teste les quatre caractères avant le crochet : â soit ce nâest pas d (ou D) ; â soit câest d (ou D) et, â pas suivi dâun a ; â suivi dâun a et, â pas suivi dâun t ; â suivi dâun t mais pas dâun e.
On 2007-12-20 13:55:59 +0100, François TOURDE wrote:
Le 13867ième jour après Epoch, Daniel Caillibaud écrivait: > marchera mieux (un peu, car ça ne substitue que la derniere espace > située entre crochet, le .* est gourmand).
On peut diminuer sa "cupidité" en rajoutant un '?' après... Ce qui donnerait .*? mais qui ne marche pas chez moi :(
Je ne pense pas que ce soit standard. C'est une extension dans les regexp de Perl (et tout ce qui les utilise), non?
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On 2007-12-20 13:55:59 +0100, François TOURDE wrote:
Le 13867ième jour après Epoch,
Daniel Caillibaud écrivait:
> marchera mieux (un peu, car ça ne substitue que la derniere espace
> située entre crochet, le .* est gourmand).
On peut diminuer sa "cupidité" en rajoutant un '?' après... Ce qui
donnerait .*? mais qui ne marche pas chez moi :(
Je ne pense pas que ce soit standard. C'est une extension dans
les regexp de Perl (et tout ce qui les utilise), non?
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On 2007-12-20 13:55:59 +0100, François TOURDE wrote:
Le 13867ième jour après Epoch, Daniel Caillibaud écrivait: > marchera mieux (un peu, car ça ne substitue que la derniere espace > située entre crochet, le .* est gourmand).
On peut diminuer sa "cupidité" en rajoutant un '?' après... Ce qui donnerait .*? mais qui ne marche pas chez moi :(
Je ne pense pas que ce soit standard. C'est une extension dans les regexp de Perl (et tout ce qui les utilise), non?
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
en clair, on teste les quatre caractères avant le crochet : â soit ce nâest pas d (ou D) ; â soit câest d (ou D) et, â pas suivi dâun a ; â suivi dâun a et, â pas suivi dâun t ; â suivi dâun t mais pas dâun e.
#!/usr/bin/ruby while ligne = STDIN.gets crochet = false until ligne.nil? case ligne when /A[dD]ate[/ print $& when /A[/ crochet = true print $& when /A]/ crochet = false print $& when /A / if crochet print '_' else print ' ' end when /A./ print $& end ligne = $' end print "n" end
en clair, on teste les quatre caractères avant le crochet :
â soit ce nâest pas d (ou D) ;
â soit câest d (ou D) et,
â pas suivi dâun a ;
â suivi dâun a et,
â pas suivi dâun t ;
â suivi dâun t mais pas dâun e.
#!/usr/bin/ruby
while ligne = STDIN.gets
crochet = false
until ligne.nil?
case ligne
when /A[dD]ate[/
print $&
when /A[/
crochet = true
print $&
when /A]/
crochet = false
print $&
when /A /
if crochet
print '_'
else
print ' '
end
when /A./
print $&
end
ligne = $'
end
print "n"
end
en clair, on teste les quatre caractères avant le crochet : â soit ce nâest pas d (ou D) ; â soit câest d (ou D) et, â pas suivi dâun a ; â suivi dâun a et, â pas suivi dâun t ; â suivi dâun t mais pas dâun e.
#!/usr/bin/ruby while ligne = STDIN.gets crochet = false until ligne.nil? case ligne when /A[dD]ate[/ print $& when /A[/ crochet = true print $& when /A]/ crochet = false print $& when /A / if crochet print '_' else print ' ' end when /A./ print $& end ligne = $' end print "n" end
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bonjour,
Le jeudi 20 décembre 2007, zelos 414 a écrit...
Je pense que sed peut suffir mais je n'arrive pas à trouver.
En effet:
echo "description[perm ission denied] " | sed -e 's/[.* .*]/[.*_.*]/g'
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Daniel Caillibaud
Sylvain Sauvage a écrit :
Donc, pour remplacer tous les espaces entre deux crochets : /[/,/]/s/ /_/g
Ça va remplacer toutes les espaces des lignes comprises une ligne contenant un crochet ouvrant et la premières des lignes suivantes qui contient un crochet fermant (ces deux lignes qui "matchent" la sélection sont inclusent).
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Sylvain Sauvage a écrit :
Donc, pour remplacer tous les espaces entre deux crochets :
/[/,/]/s/ /_/g
Ça va remplacer toutes les espaces des lignes comprises une ligne contenant un crochet ouvrant et la premières des
lignes suivantes qui contient un crochet fermant (ces deux lignes qui "matchent" la sélection sont inclusent).
--
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Donc, pour remplacer tous les espaces entre deux crochets : /[/,/]/s/ /_/g
Ça va remplacer toutes les espaces des lignes comprises une ligne contenant un crochet ouvrant et la premières des lignes suivantes qui contient un crochet fermant (ces deux lignes qui "matchent" la sélection sont inclusent).
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le jeudi 20 décembre 2007 11:02, zelos 414 a écrit :
Bonjour la liste,
Je me heurte depuis quelques temps à un souci de substitution de caractère dans une sous-chaine.
Voici la chaîne d'origine:
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[permission denied] level[critical]
Quelquefois, je la reçois sous cette forme (remarquez qu'un espace s'est inséré dans "perm ission" et "cri tical") :
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[perm ission denied] level[cri tical]
J'aimerai donc supprimer tous les espaces ' ' contenus entre crochets SAUF dans ceux précédés de 'date' ou 'creationDate'
Désolé, je ne répondrai pas vraiment à ta question mais corriger le problème à sa source est-il envisageable ?
As-tu regardé pourquoi tu obtiens des espaces « en trop » dans tes ch aines ?
D'autre part, tu ne devrais pas remplacer tous les espaces dans "perm issio n denied" ...
-- Davy Gigan System & Network Administration [Please no HTML, I'm not a browser] University Of Caen (France) [Pas d'HTML, je ne suis pas un navigateur]
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le jeudi 20 décembre 2007 11:02, zelos 414 a écrit :
Bonjour la liste,
Je me heurte depuis quelques temps à un souci de substitution de
caractère dans une sous-chaine.
Voici la chaîne d'origine:
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[permission
denied] level[critical]
Quelquefois, je la reçois sous cette forme (remarquez qu'un espace
s'est inséré dans "perm ission" et "cri tical") :
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[perm ission
denied] level[cri tical]
J'aimerai donc supprimer tous les espaces ' ' contenus entre crochets
SAUF dans ceux précédés de 'date' ou 'creationDate'
Désolé, je ne répondrai pas vraiment à ta question mais corriger le problème à
sa source est-il envisageable ?
As-tu regardé pourquoi tu obtiens des espaces « en trop » dans tes ch aines ?
D'autre part, tu ne devrais pas remplacer tous les espaces dans "perm issio n
denied" ...
--
Davy Gigan
System & Network Administration [Please no HTML, I'm not a browser]
University Of Caen (France) [Pas d'HTML, je ne suis pas un navigateur]
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Le jeudi 20 décembre 2007 11:02, zelos 414 a écrit :
Bonjour la liste,
Je me heurte depuis quelques temps à un souci de substitution de caractère dans une sous-chaine.
Voici la chaîne d'origine:
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[permission denied] level[critical]
Quelquefois, je la reçois sous cette forme (remarquez qu'un espace s'est inséré dans "perm ission" et "cri tical") :
type[TEST] date[Sun Dec 16 15:45:53 CET 2007] description[perm ission denied] level[cri tical]
J'aimerai donc supprimer tous les espaces ' ' contenus entre crochets SAUF dans ceux précédés de 'date' ou 'creationDate'
Désolé, je ne répondrai pas vraiment à ta question mais corriger le problème à sa source est-il envisageable ?
As-tu regardé pourquoi tu obtiens des espaces « en trop » dans tes ch aines ?
D'autre part, tu ne devrais pas remplacer tous les espaces dans "perm issio n denied" ...
-- Davy Gigan System & Network Administration [Please no HTML, I'm not a browser] University Of Caen (France) [Pas d'HTML, je ne suis pas un navigateur]
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact