J'essaie d'écrire une commande grep pour trouver des lignes comme celle ci-dessous dans un fichier texte volumineux:
<div class="node_thumbnail" data-type="file" name="GOPR0036.MP4_frame000001.jpg" data="813334c25191468c9f1c57afc99fde60" aid="133948" rel="/Files/ToolTipView?fileId=813334c25191468c9f1c57afc99fde60&pageNo=1&NoCache=101016083044" rev="topMiddle">
mais le symbole +
semble causer des problèmes dans les commandes ci-dessous:
grep 'data=[a-z,0-9,\"]' file
Beaucoup de hits
grep 'data=[a-z,0-9,\"]+' file
Aucun résultat
Si vous voulez que +
signifie "un ou plusieurs des atomes précédents", vous devez alors effectuer l'une des opérations suivantes:
Utilisez -E
(Expressions régulières étendues) (ou -P
, PCRE):
grep -E 'data=[a-z,0-9,\"]+' file
Echap +
pour qu'il soit traité spécialement dans les expressions régulières de base utilisées par défaut dans grep
:
grep 'data=[a-z,0-9,"]\+' file
Points:
_+
_ est un jeton ERE (expression régulière étendue), indiquant qu'un ou plusieurs des jetons précédents, peut être utilisé si l'option _-E
_ de grep
est utilisée ou avec un caractère d'échappement _(\+
_) en cas de BRE (regex basique), c’est-à-dire uniquement grep
La classe de caractères _[a-z,0-9,\"]
_ correspond à n'importe lequel des caractères compris entre _[a-z]
_, _[0-9]
_, _,
_ ou _"
_. Cela peut ne pas être ce que vous voulez
Normalement, grep
affiche la ligne entière. Si vous souhaitez uniquement afficher la partie correspondante, utilisez l'option _-o
_ de grep
.
Sur la base de votre exemple, vous pouvez faire:
_grep -E '\bdata=[a-z0-9"]+\b' file
_
-E
_ active ERE\b
_ correspond aux bords de la chaîne, largeur zérodata=
_ correspond à _data=
_ littéralement[a-z0-9"]
_ correspond à tout caractère de _[a-z]
_, _[0-9]
_ et _"
_. _+
_ correspond au jeton précédent une ou plusieurs foisVotre modèle actuel, même si vous le corrigez, sans _\b
_, cela correspond aux faux positifs tels que _foo fdata=2322ab
_, _data=12AB
_ et ainsi de suite.
Exemple:
_% grep -oE '\bdata=[a-z0-9"]+\b' <<<'<div class="node_thumbnail" data-type="file" name="GOPR0036.MP4_frame000001.jpg" data="813334c25191468c9f1c57afc99fde60" aid="133948" rel="/Files/ToolTipView?fileId=813334c25191468c9f1c57afc99fde60&pageNo=1&NoCache=101016083044" rev="topMiddle"'
data="813334c25191468c9f1c57afc99fde60
_