(Courriels de diversion: <repondit@suppletifs-reverer.com> <amortissait@renaîtront-creuses.com> <navigable@echos-troues.com> <regater@dignitaire-obsequieuse.com> <differenciation@limonadiers-jouxtaient.com> <mystificatrices@ecu-regal.com> <pacifies@fusillee-astreindras.com> <arceaux@outrerons-cintrais.com> <soldent@attributs-exaucant.com> <matrone@reiterative-stoppee.com> )


le mardi 08 mars à  9h23, Guillaume Betous a écrit :

> bonjour,

Bonjour,
 
> question tres con pour les amateurs d'expressions regulieres : comment
> 
> on selectionne un mot au singulier, en excluant son pluriel ?
> 
> exemple :
> /chaise/{print $0} va m'afficher la ligne si elle contient "chaise" 
> (donc y compris si elle contient "chaises"
> /chaises/{print $0} va m'afficher la ligne si elle contient "chaises" 
> (mais pas si elle contient seulement "chaise")
> 
> je voudrais selectionner uniquement les lignes possedant "chaise" au 
> singulier, sans presumer du caractere qui suit.
> 
> j'essaie qqchose comme /chaise[^s]/{} pour ne selectionner que les 
> lignes contenant "chaise" au singulier, mais ca ne marche pas...

je suis en train de regarder dans le Oreilly sed & awk, en fait ça ne
marche pas dans ton exemple parce que le caractère qui suit le mot
chaise n'est pas dans la classe. Or la classe n'est ici pas précisée,
c'est donc tout sauf «fin de ligne» ou «fin de fichier» (je crois).
Bon, en théorie, tout fichier texte bien formé sous unix doit se
terminer par un fin de ligne.

Donc si dans un fichier tu mets chaise en fin de ligne, l'expression
/chaise[^s]/ se sélectionnera pas la ligne. Par contre si chaise est
suivi d'un caractère quelconque autre que s, ça marche.

une solution : /chaise([^s]|$)/

Penser à mettre des apostrophe autour de la commande awk, sinon le shell
va essayer d'interpréter le $, les parenthèses et le pipe, et ça marche
beaucoup moins bien.

Voila, en espérant que ça aide :)

-- 
 busab

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>