Pages : 1
#1 Le 28/04/2012, à 22:45
- inoune
La commande grep
Salut tout le monde !
Je veux chercher, à l'aide de grep, les mots qui contiennent "vu" et se terminent par "m" dans un fichier.
Si quelqu'un peut m'aider et merci d'avance.
Hors ligne
#2 Le 28/04/2012, à 23:56
- hibou7
Re : La commande grep
Salut inoune,
tu veux donc utiliser grep avec 2 critères de sélection.
Je n'ai rien su trouver sur ce sujet dans le guide Unix de Lozano, ni dans le tutoriel vidéo (voir mon profil) ni avec "man grep". Franchement je ne suis pas encore un crac dans les commandes, mais j'imagine qu'on doit pouvoir se débrouiller avec une redirection dans le genre...
grep vu fichier.dat | grep 'm$'
Je n'ai pas encore testé...
Dernière modification par hibou7 (Le 28/04/2012, à 23:57)
Xubuntu 22.04 sur HP ENVY TS Sleekbook 4 | CPU: Intel Core i5-3337U | RAM: 8 Gio
Débuter en Console
Si GNU/Linux ne répond plus, le redémarrer proprement avec la combinaison de touches:
Alt + SysRq + REISUB (Retourne en Islande sur un bateau).
Hors ligne
#3 Le 29/04/2012, à 06:53
- pingouinux
Re : La commande grep
Bonjour,
grep -oPw "[^\s]*vu[^\s]*m" fichier
Hors ligne
#4 Le 29/04/2012, à 07:11
- inoune
Re : La commande grep
cool Merci à vous deux! Vos deux propositions sont bonnes.
Celle de hibou7 parait clair, je l'ai bien compris. Merci
@pingouinux: Merci à toi aussi, ta proposition a aussi réussi, sauf que je ne l'ai pas bien compris. Tu peux me l' expliquer si tu peux? Et merci encore une fois
Hors ligne
#5 Le 29/04/2012, à 07:41
- pingouinux
Re : La commande grep
grep -oPw "[^\s]*vu[^\s]*m" fichier
Tu peux me l' expliquer si tu peux?
\s : séparateur (espace, tabulation…)
[^\s] : un caractère autre que séparateur
[^\s]* : 0 ou un nombre quelconque de caractères autres que séparateurs
Extrait de man grep :
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression. This is highly experimental and grep -P may warn of
unimplemented features.
-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 constituent
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.
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output
line.
Ajouté : La commande de hibou7 #2 affiche toutes les lignes contenant vu et se terminant par m
Dernière modification par pingouinux (Le 29/04/2012, à 07:49)
Hors ligne
#6 Le 29/04/2012, à 08:43
- inoune
Re : La commande grep
re salut
merci beaucoup, j'ai compris un petit peu, même si les options P et w restent tordus à comprendre. En tout cas, la commande réussit bien sans le -oPw
J'ai testé la commande de hibou7 pour chercher les noms des fichiers avec cette manière.
ls | grep vu | 'm$' ça m'a réussi, mais quand je veux l'utiliser pour chercher des mots dans un fichier comme ça: grep vu file | grep 'm$' ça na pas réussi ! Je ne comprend pas pourquoi exactement.
Dernière modification par inoune (Le 29/04/2012, à 08:45)
Hors ligne
#7 Le 29/04/2012, à 08:48
- pingouinux
Re : La commande grep
ls | grep un | 't$' ça m'a réussi, mais quand je veux l'utiliser pour chercher des mots dans un fichier comme ça: grep un file | 't$' ça na pas réussi ! Je ne comprend pas pourquoi exactement.
C'est parce que ls suivi d'un pipe (|) affiche les noms en colonne, donc il n'y a qu'un mot par ligne. Lorsqu'il y a plusieurs mots par ligne, ma commande du #3 devrait marcher.
Hors ligne
#8 Le 29/04/2012, à 09:00
- inoune
Re : La commande grep
certainement, ta commande a fortement réussi. Mon fichier file ne comporte qu'un seul mot et qui vérifie le critère. Et pourtant, grep vu file| grep 'm$' n'affiche rien
Dernière modification par inoune (Le 29/04/2012, à 09:15)
Hors ligne
#9 Le 29/04/2012, à 09:22
- pingouinux
Re : La commande grep
Et pourtant, grep vu file| grep 'm$' n'affiche rien
C'est que m n'est pas le dernier caractère de la ligne (espaces en fin de ligne ?), ou que le fichier est du type windows (ligne terminée par <CR><LF> au lieu de <LF>).
Que donne cette commande :
file file # Le 1er file est une commande, l'autre le nom du fichier
et celle-ci (si file est petit) ?
xxd file
Hors ligne
#10 Le 29/04/2012, à 14:32
- Perosurac
Re : La commande grep
Moi à priori j'aurais fait
grep -e ".*mu.*m$" <fichier>
Hors ligne
#11 Le 29/04/2012, à 15:28
- inoune
Re : La commande grep
@pingouinux Ah je vois ce que vous voulez dire! Effectivement "m" n'était pas le dernier caractère dans la ligne de mon fichier!
(Juste pour te répondre à tes 2 questions: Si mon fichier s'appelle "stu" et contient cette phrase: "salut luvuhm !!"
Pour file stu, ça donne: ASCII text
Pour xxd stu, ça donne: 0000000: 7361 6c75 7420 6c75 7675 686d 2021 210a salut luvuhm !!.
@Perosurac Merci, ça a bien marché! C'est la ligne que je cherche car elle est bien compréhensible, et avec laquelle, j'ai pu résoudre d'autres trucs.
Même si cette commande a le même résultat que celle de hibou7, çàd que si "m" n'est pas le dernier caractère de la ligne, on n'affichera rien.
Je signale que ta commande a bien marché sans le -e
Merci encore une fois à toutes vos propositions. J'ai appris pas mal de choses sur ce topic
Dernière modification par inoune (Le 29/04/2012, à 15:30)
Hors ligne
Pages : 1