OVH Cloud OVH Cloud

Comportement de grep

13 réponses
Avatar
dominique
Bonjour,
Je me mets aux expressions régulières et j'ai quelque difficulté avec
les options de grep.
Pourquoi ai-je cette réponse (entrée standard):
[normal@localhost Temp]$ cat *.DOC | grep -l grep
(entrée standard)

Je sais que dans 3 fichier .DOC (grep pour Windows), j'ai le motif «
grep ». Pourquoi, avec l'option -l, ma recherche ne me renvoie-t-elle
pas les noms des fichiers où elle le trouve ?
Merci et bonne journée,
Dominique

PS : ces fichiers.DOC sont de faux documents MSoffice. Il s'agit de
simples fichiers texte lisibles avec vim.

3 réponses

1 2
Avatar
dominique

En donnant les chemins complets sur la ligne de commande.

grep foo ~/.*


Vu ! Merci.
Avec
grep -c alias ~/.* | grep -v :0
j'obtiens le nombre de fois où le motif 'alias' est trouvé dans les
fichiers cachés de mon home avec leur nom et le chemin complet
(recherche récursive dans les sous-répertoires avec -r). Le second grep
rejette les fichiers où le motif n'existe pas.
Y a-t-il une solution plus « élégante » pour arriver au même résultat ?
Bonne soirée,
Dominique

Avatar
Michel Tatoute
dominique wrote:


En donnant les chemins complets sur la ligne de commande.

grep foo ~/.*


Vu ! Merci.
Avec
grep -c alias ~/.* | grep -v :0
j'obtiens le nombre de fois où le motif 'alias' est trouvé dans les
fichiers cachés de mon home avec leur nom et le chemin complet


non:
tu obtiens le nombre de lignes contenant alias (si il y a deux alias sur 1
ligne il ne comptent que pour 1).

(recherche récursive dans les sous-répertoires avec -r). Le second grep
rejette les fichiers où le motif n'existe pas.


non:
il rejette aussi les fichiers dont le nom contient :0
il affiche le morceau de nom de fichier contenant un
saut de ligne dans le nom meme s'il y a 0 alias dedans


pour corriger "il rejette aussi les fichiers dont le nom contient :0" :

grep -c alias ~/.* | grep -v ':0$'

Y a-t-il une solution plus « élégante » pour arriver au même résultat ?


$ grep -lZr alias ~/ | xargs -0 grep -F -c alias

c'est ce que je peux te proposer de mieux en utilisant grep,
mais c'est pas terrible.

Bonne soirée,
Toi aussi,


Dominique


Michel


Avatar
Michel Tatoute
dominique wrote:


En donnant les chemins complets sur la ligne de commande.

grep foo ~/.*


Vu ! Merci.
Avec
grep -c alias ~/.* | grep -v :0
j'obtiens le nombre de fois où le motif 'alias' est trouvé dans les
fichiers cachés de mon home avec leur nom et le chemin complet


non:
tu obtiens le nombre de lignes contenant alias (si il y a deux alias sur 1
ligne il ne comptent que pour 1).

(recherche récursive dans les sous-répertoires avec -r). Le second grep
rejette les fichiers où le motif n'existe pas.


non:
il rejette aussi les fichiers dont le nom contient :0
il affiche le morceau de nom de fichier contenant un
saut de ligne dans le nom meme s'il y a 0 alias dedans


pour corriger "il rejette aussi les fichiers dont le nom contient :0" :

grep -c alias ~/.* | grep -v ':0$'

Y a-t-il une solution plus « élégante » pour arriver au même résultat ?


$ grep -lFZr alias ~/ | xargs -0 grep -F -c alias

c'est ce que je peux te proposer de mieux en utilisant grep,
mais c'est pas terrible.

Bonne soirée,
Toi aussi,


Dominique


Michel


1 2