À (at) Mon, 14 Nov 2005 11:20:29 +0100, Le Gaulois nous disait (told us):
Bonjour,
existe-t-il une option de la commande s pour ne faire le remplacement que dans le cas d'un mot entier ?
s/machin/bidule/g seulement si "machin" est un mot entier
un mot entier = avec une espace après ? à ce moment : sed s/machin /bidule /g
-- Thomas vO - <http://perso.enstimac.fr/~vanouden/>
Marc Boyer
Le 14-11-2005, Le Gaulois a écrit :
existe-t-il une option de la commande s pour ne faire le remplacement que dans le cas d'un mot entier ?
s/machin/bidule/g seulement si "machin" est un mot entier
Pas de manière portable et simple à ma connaissance, mais les outils manipulant des expressions regulières proposent souvent des extensions à base de délimiteur < et >. Sur ma machine Linux, la page de man de sed renvoit sur celle de regex(7), qui dit
There are two special cases(!) of bracket expressions: the bracket expressions `[[:<:]]' and `[[:>:]]' match the null string at the beginning and end of a word respectively. A word is defined as a sequence of word characters which is neither preceded nor followed by word characters. A word character is an alnum character (as defined by wctype(3)) or an underscore. This is an extension, compatible with but not specified by POSIX 1003.2, and should be used with caution in software intended to be portable to other systems.
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangereux que prendre un boulevard dans le sens légal. À qui la faute ?
Le 14-11-2005, Le Gaulois <nonlu@ifrance.com> a écrit :
existe-t-il une option de la commande s pour ne faire le remplacement
que dans le cas d'un mot entier ?
s/machin/bidule/g seulement si "machin" est un mot entier
Pas de manière portable et simple à ma connaissance,
mais les outils manipulant des expressions regulières
proposent souvent des extensions à base de délimiteur
< et >.
Sur ma machine Linux, la page de man de sed renvoit
sur celle de regex(7), qui dit
There are two special cases(!) of bracket expressions: the bracket
expressions `[[:<:]]' and `[[:>:]]' match the null string at the
beginning and end of a word respectively. A word is defined as a
sequence of word characters which is neither preceded nor followed by
word characters. A word character is an alnum character (as
defined by wctype(3)) or an underscore. This is an extension,
compatible with but not specified by POSIX 1003.2, and should be used
with caution in software intended to be portable to other systems.
Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangereux
que prendre un boulevard dans le sens légal. À qui la faute ?
existe-t-il une option de la commande s pour ne faire le remplacement que dans le cas d'un mot entier ?
s/machin/bidule/g seulement si "machin" est un mot entier
Pas de manière portable et simple à ma connaissance, mais les outils manipulant des expressions regulières proposent souvent des extensions à base de délimiteur < et >. Sur ma machine Linux, la page de man de sed renvoit sur celle de regex(7), qui dit
There are two special cases(!) of bracket expressions: the bracket expressions `[[:<:]]' and `[[:>:]]' match the null string at the beginning and end of a word respectively. A word is defined as a sequence of word characters which is neither preceded nor followed by word characters. A word character is an alnum character (as defined by wctype(3)) or an underscore. This is an extension, compatible with but not specified by POSIX 1003.2, and should be used with caution in software intended to be portable to other systems.
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangereux que prendre un boulevard dans le sens légal. À qui la faute ?
TiChou
Dans le message <news:, *Le Gaulois* tapota sur f.c.o.unix :
Bonjour,
Bonjour,
existe-t-il une option de la commande s pour ne faire le remplacement que dans le cas d'un mot entier ?
D'une manière simple, je ne pense pas.
s/machin/bidule/g seulement si "machin" est un mot entier
Une solution alternative est d'utiliser perl où les expressions rationnelles permettent de faire beaucoup plus que les expressions rationnelles classiques. Par exemple, il existe l'ancre b qui permet dans une expression de séparer les mots. Par exemple :
Dans le message <news:437864ED.F39543C2@ifrance.com>,
*Le Gaulois* tapota sur f.c.o.unix :
Bonjour,
Bonjour,
existe-t-il une option de la commande s pour ne faire le remplacement
que dans le cas d'un mot entier ?
D'une manière simple, je ne pense pas.
s/machin/bidule/g seulement si "machin" est un mot entier
Une solution alternative est d'utiliser perl où les expressions rationnelles
permettent de faire beaucoup plus que les expressions rationnelles
classiques.
Par exemple, il existe l'ancre b qui permet dans une expression de séparer
les mots. Par exemple :
Dans le message <news:, *Le Gaulois* tapota sur f.c.o.unix :
Bonjour,
Bonjour,
existe-t-il une option de la commande s pour ne faire le remplacement que dans le cas d'un mot entier ?
D'une manière simple, je ne pense pas.
s/machin/bidule/g seulement si "machin" est un mot entier
Une solution alternative est d'utiliser perl où les expressions rationnelles permettent de faire beaucoup plus que les expressions rationnelles classiques. Par exemple, il existe l'ancre b qui permet dans une expression de séparer les mots. Par exemple :