(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/>