Wie würden Sie nach alphanumerischen Zeichenfolgen mit 1 bis 50 Zeichen (im Idealfall mit beliebiger Länge) mit einem Doppelpunkt auf jeder Seite suchen - ein typisches Ergebnis wären alle Zeilen, die die Zeichenfolge enthalten :shopping:
. Bisher habe ich den folgenden Code (ich habe einige Variationen davon ausprobiert), der nicht funktioniert:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
indem Sie den-E
Schalter einschließen .Antworten:
Sie müssen dafür erweiterte reguläre Ausdrücke aktivieren:
quelle
Mit einfachen regulären Ausdrücken können Sie Folgendes schreiben:
Beachten Sie, dass
\{
(im Gegensatz zu\+
oder\?
zum Beispiel) Standard und portabel ist und die BRE-Entsprechungen von+
und?
normalerweise mit\{
:\{1,\}
und geschrieben werden\{0,1\}
.grep -E
Es ist jedoch auch Standard und portabel, sodass Sie es genauso gut verwenden können, da es in diesen Fällen zu besser lesbaren regulären Ausdrücken führt.quelle
Sie verwenden einen erweiterten regulären Ausdruck, daher müssen Sie die Option -E verwenden:
quelle
Da es sonst niemand erwähnte, können Sie auch verwenden
egrep
, was, wie ich es verstehe, äquivalent istgrep -E
.quelle
egrep
war der historische Befehl, mit EREs zu greifen. Die Funktionalität von grep und egrep wurde (vor langer Zeit) mit der Option -E in grep zusammengeführt.egrep
wird jetzt als veraltet / veraltet betrachtet (aber es ist unwahrscheinlich, dass dies passiert, da einige Leute immer noch daran gewöhnt sind).