J'ai fait beaucoup de recherches là-dessus, mais je ne suis toujours pas clair à ce sujet. Que signifie limite de mot ? Qu'est ce que ça fait?
Ainsi, par exemple, quelqu'un pourrait-il m'expliquer cette commande s'il vous plaît?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
user36683
la source
la source
[azA-Z0-9_]
. Consultez le manuelegrep(1)
, peut-être la doumentation des expressions régulières utilisées.Réponses:
Comme décrit ici , par exemple, il correspond entre les mots:
Voici des exemples de chacun de ces cas:
Pour la chaîne
foobar
, le premier cas correspondPour la chaîne
foobar
, le deuxième cas correspondPour la chaîne
foo bar
, le troisième cas correspondraCe qui est qualifié de caractère de mot dépend de l'implémentation de l'expression régulière spécifique. Dans tous les cas cependant, les lettres (
[a-z]
et[A-Z]
), les chiffres ([0-9]
) et_
sont considérés comme des caractères de mot.Ainsi, l'exemple d'expression régulière que vous avez publié (
\b[A-Z]+\b
) signifie trouver la chaîne la plus longue qui se trouve entre deux limites de mot et qui se compose uniquement de lettres majuscules. Il pourrait être plus facile d'expliquer par l'exemple:la source
egrep
(nor/usr/xpg4/bin/egrep
) ne traite pas de\b
cette façon. Par exemple,echo "FOOBAR" | egrep '\b[A-Z]+\b'
ne correspondrait pas.Permet de le casser:
[A-Z]
représente n'importe quel caractère de la classe de caractères[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.[A-Z]+
représente une ou plusieurs occurrences de caractères majuscules. Matches exemple serait:A
,HELLO
,IS
,I
,ELEPHANT
, etc.'\bINDIA\b'
: est exactement comme une recherche de MOT ENTIER pour le motINDIA
en majuscule. Cela ne correspondrait PASINDIANA
. Ainsi, appliquer le même principe -'\b[A-Z]+\b'
rechercherait des mots entiers ayant une ou plusieurs lettres en majuscules.egrep '\b[A-Z]+\b' filename.sh
rechercherait des mots ayant une ou plusieurs lettres tout en majuscule dans le fichier -filename.sh
.\b
- c'est exactement comme une recherche de mots entiers.la source