A voir également:
- [commande grep] question simple
- Invite de commande - Guide
- Commande terminal mac - Guide
- Iphone 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
17 réponses
Re d-bax :)
Ta question initiale était imprécise, car tu n'indiquais pas celà.
... et tu réponds incomplètement à la question "qu'est-ce que tu cherches" car on irait plus vite si tu disais ce qu'il peut (doit) y avoir après le mot et/ou avant le mot : rien ? espace(s) ?, ponctuation (exemple : virgule, point), guillements, apostrophe, etc., pour que tu considères le résultat juste (visiblement celà fait partie de ta recherche, donc).
On y verrait aussi un peu plus clair aussi si tu disais en quoi consiste ton fichier de départ (si c'est un texte avec des phrases, s'il a un format particulier comme celui de ton exemple, etc.).
Aides nous un peu, stp.
Dal
Ta question initiale était imprécise, car tu n'indiquais pas celà.
... et tu réponds incomplètement à la question "qu'est-ce que tu cherches" car on irait plus vite si tu disais ce qu'il peut (doit) y avoir après le mot et/ou avant le mot : rien ? espace(s) ?, ponctuation (exemple : virgule, point), guillements, apostrophe, etc., pour que tu considères le résultat juste (visiblement celà fait partie de ta recherche, donc).
On y verrait aussi un peu plus clair aussi si tu disais en quoi consiste ton fichier de départ (si c'est un texte avec des phrases, s'il a un format particulier comme celui de ton exemple, etc.).
Aides nous un peu, stp.
Dal
Je suis nul en expression régulières mais je ferais un truc comme :
ou bien
Il y a surement mieux.
cat fichier |grep ` content `
ou bien
cat fichier |grep content|grep [^mecontent]
Il y a surement mieux.
Salut,
Il faut utiliser "grep" avec l'option "-E" (pour considérer la chaine comme une expression régulière étendue), couplée au méta-caractère "\b" (la chaîne est ancrée à un mot), ce qui donne :
Il faut utiliser "grep" avec l'option "-E" (pour considérer la chaine comme une expression régulière étendue), couplée au méta-caractère "\b" (la chaîne est ancrée à un mot), ce qui donne :
cat fichier | grep -E '\bcontent\b';-)
ni l un ni l autre ne marche :( . De plus content et mecontent c etait un exemple je ne veux pas les sorties "*content*"
En effet en plus j execute ca dans un script csh donc avec les guillemets je sais pas comment faire
-->
echo "`cat file | grep content ??? "
En effet en plus j execute ca dans un script csh donc avec les guillemets je sais pas comment faire
-->
echo "`cat file | grep content ??? "
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut d-bax,
Chez moi, grep a une option "-w", que le manuel décrit comme çà :
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word con-
stituent character. Similarly, it must be either at the end of
the line or followed by a non-word constituent character. Word-
constituent characters are letters, digits, and the underscore.
Avec cette option
echo "mécontent" | grep -w content
ne retourne rien
echo "très content" | grep -w content
retourne la ligne
Il faut veiller à ce que tes variables d'environnement soient bien paramétrées (LC_ALL, LC_CTYPE, LANG) pour que grep s'y retrouve dans les caractères français (sinon les caractères accentués sont considérés comme non alphabétiques ou des caractères séparateurs).
Dal
Chez moi, grep a une option "-w", que le manuel décrit comme çà :
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word con-
stituent character. Similarly, it must be either at the end of
the line or followed by a non-word constituent character. Word-
constituent characters are letters, digits, and the underscore.
Avec cette option
echo "mécontent" | grep -w content
ne retourne rien
echo "très content" | grep -w content
retourne la ligne
Il faut veiller à ce que tes variables d'environnement soient bien paramétrées (LC_ALL, LC_CTYPE, LANG) pour que grep s'y retrouve dans les caractères français (sinon les caractères accentués sont considérés comme non alphabétiques ou des caractères séparateurs).
Dal
La preuve que ça marche :
[jp@Mandrake tmpfs]$ cat fichier Je souhaite faire une recherche, par exemple sur le mot "content" mais je ne veux pas retrouver le mot "mecontent" je voudrais qu il recherche exactement ma requete, je me contenterai d'un exemple. [jp@Mandrake tmpfs]$ cat fichier | grep -E '\bcontent\b' Je souhaite faire une recherche, par exemple sur le mot "content" mais [jp@Mandrake tmpfs]$Sinon pour la syntaxe avec les guillemets, il faut encadrer la commande par des "quotes inversées" :
echo " `cat fichier | grep -E '\bcontent\b' ` ";-)
J ai une erreur quand je fais echo " `cat fichier | grep -E '\bcontent\b' ` "
-->
grep: illegal option -- E
Usage: grep -hblcnsviw pattern file . . .
-->
grep: illegal option -- E
Usage: grep -hblcnsviw pattern file . . .
Plus d erreur avec le egrep mais par contre il me sort ausun resultat il ne retrouve plus rien cette fois . Aie je me casse la tete ... Help me please ...
hmm... je ne suis pas le seul à avoir l'option "-w" telle que décrite là :
http://www.commentcamarche.net/forum/affich-1361557#4
... si ??
Dal
qui se sent seul tout à coup
http://www.commentcamarche.net/forum/affich-1361557#4
... si ??
Dal
qui se sent seul tout à coup
le grep -w ne marche pas car il trouve par exemple --> "(content)"
si dans le fichier tu as
1-content
2-mecontent
3-(content)
alors la ligne 1 et 2 sera sortie ...
si dans le fichier tu as
1-content
2-mecontent
3-(content)
alors la ligne 1 et 2 sera sortie ...
Salut d-bax,
Je pense que tu veux dire 1- et 3-.
C'est normal de grep -w sorte (content), car son algorithme détecte les "mots" en utilisant, pour les distinguer, notamment des caractères séparateurs qui dans la syntaxe d'une langue déterminée ne font pas partie de l'orthographe de mots du dictionnaire.
En français, lorsque tu mets un mot entre parenthèses, le mot reste le même.
Que veux-tu rechercher exactement ?
Dal
Je pense que tu veux dire 1- et 3-.
C'est normal de grep -w sorte (content), car son algorithme détecte les "mots" en utilisant, pour les distinguer, notamment des caractères séparateurs qui dans la syntaxe d'une langue déterminée ne font pas partie de l'orthographe de mots du dictionnaire.
En français, lorsque tu mets un mot entre parenthèses, le mot reste le même.
Que veux-tu rechercher exactement ?
Dal
effectivement je voulais dire 1 et 3...
Je veux afficher les lignes d un fichier qui contiennent exactement le mot que je recherche , si ce mot est entre parenthese (ou carecteres speciaux) je ne veux pas qu il s affiche.
Je veux afficher les lignes d un fichier qui contiennent exactement le mot que je recherche , si ce mot est entre parenthese (ou carecteres speciaux) je ne veux pas qu il s affiche.
effectivement je voulais dire 1 et 3...
Je veux afficher les lignes d un fichier qui contiennent exactement le mot que je recherche , si ce mot est entre parenthese (ou carecteres speciaux) je ne veux pas qu il s affiche.
Je veux afficher les lignes d un fichier qui contiennent exactement le mot que je recherche , si ce mot est entre parenthese (ou carecteres speciaux) je ne veux pas qu il s affiche.
Justement il me semble que j ai bien repondu a ta question.
En pratique, je cherche le mot content, je peux aussi bien trouver dans ce fichier : content mecontent (content) "content" ,content>
je ne vais donc pas chercher toutes les possibilite qui existe ...
je veux chercher le mot content SEUL
exemple de fichier :
1- je suis content
2- content je suis
3- je suis mecontent
4- je suis pas (content)
5- je suis "content"
6- je suis -content*
...
dans ce cas je veux que seul la ligne 1 de ce fichier soit affichee.
En fait faudrait que je puisse par grep dire :
tu sors le mot content quand il a un espace devant et derriere (attention devant ca veux rien dire si le mot est en debut de ligne)
En pratique, je cherche le mot content, je peux aussi bien trouver dans ce fichier : content mecontent (content) "content" ,content>
je ne vais donc pas chercher toutes les possibilite qui existe ...
je veux chercher le mot content SEUL
exemple de fichier :
1- je suis content
2- content je suis
3- je suis mecontent
4- je suis pas (content)
5- je suis "content"
6- je suis -content*
...
dans ce cas je veux que seul la ligne 1 de ce fichier soit affichee.
En fait faudrait que je puisse par grep dire :
tu sors le mot content quand il a un espace devant et derriere (attention devant ca veux rien dire si le mot est en debut de ligne)
Sur ton fichier d'exemple, la commande suivante renvoie ce que tu veux :
cat test.txt | grep -v "^.[0123456789]*- content " | grep " content "
Celà suppose que chaque ligne commence par un chiffre ou un nombre qui soit immédiatement suivi d'un tiret et d'un espace pour que l'exception "ca veux rien dire si le mot est en debut de ligne" soit prise en compte.
si tes lignes commencent par quelque chose d'arbitraire, mais que tu ne veux pas retenir les cas où elles commencent par un espace et par "content" ou par "content" sans espace avant, alors la ligne appropriée serait :
cat test.txt | grep -v "^ content " | grep " content "
Dal
cat test.txt | grep -v "^.[0123456789]*- content " | grep " content "
Celà suppose que chaque ligne commence par un chiffre ou un nombre qui soit immédiatement suivi d'un tiret et d'un espace pour que l'exception "ca veux rien dire si le mot est en debut de ligne" soit prise en compte.
si tes lignes commencent par quelque chose d'arbitraire, mais que tu ne veux pas retenir les cas où elles commencent par un espace et par "content" ou par "content" sans espace avant, alors la ligne appropriée serait :
cat test.txt | grep -v "^ content " | grep " content "
Dal
merci pour votre aide je m en suis sorti avec l aide de awk.
par chance toutes les lignes ou se trouve le mot "content" ont moins de 40 caracteres
solution :
cat fichier | grep content | awk 'length<40'
par chance toutes les lignes ou se trouve le mot "content" ont moins de 40 caracteres
solution :
cat fichier | grep content | awk 'length<40'
Mouais...
Pas trés optimisé tout ça...
Si tu dois lire ton fichier pour compter le nombre de caractéres des lignes ou se trouvent "content" c'est un peu idiot de ne pas prendre un stylo et de les marquer a ce moment là ;)
Un truc comme:
On cherche quelque content précédé d'un espace non précédé d'un debut de ligne, et suivi soit d'un espace, soit d'une fin de ligne.
Le tout en ayant pris soin de supprimer les éventuels espaces doubles.
++
Pas trés optimisé tout ça...
Si tu dois lire ton fichier pour compter le nombre de caractéres des lignes ou se trouvent "content" c'est un peu idiot de ne pas prendre un stylo et de les marquer a ce moment là ;)
Un truc comme:
cat fichier| tr -s ' ' | grep -e "[^\^] content\(\ \|\$\)"ne ferai t-il pas l'affaire?( à tester)
On cherche quelque content précédé d'un espace non précédé d'un debut de ligne, et suivi soit d'un espace, soit d'une fin de ligne.
Le tout en ayant pris soin de supprimer les éventuels espaces doubles.
++
Ca c est sur que l on peut surement optimiser ma solution n est pas terrible.
Mais la tienne ne fonctionne pas non plus :( -->
1ere erreur : Variable name must contain alphanumeric characters
il manque pas un numero d argument ici ?
cat fichier| tr -s ' ' | grep -e "[^\^] content\(\ \|\$????\)"
2ieme erreur : quand je met un n umero d argument
grep: illegal option -- e
:( !
Mais la tienne ne fonctionne pas non plus :( -->
1ere erreur : Variable name must contain alphanumeric characters
il manque pas un numero d argument ici ?
cat fichier| tr -s ' ' | grep -e "[^\^] content\(\ \|\$????\)"
2ieme erreur : quand je met un n umero d argument
grep: illegal option -- e
:( !
cat fichier| tr -s ' ' | grep -e "[^\^] content\(\ \|\$????\)"Le probleme se situe dans la modification que tu as fait de l'expression précédente.
\(\ \|\$????\): Dans cette partie de l'expression, le \$ représente une fin de ligne et ne peut donc pas etre suivi de quoi que ce soit. Il b'est pas non plus forcément nécéssaire de l'échapper.
Variable name must contain alphanumeric characters
il manque pas un numero d argument ici ? La variable en question, telle que considérée par grep est: $????