1019 Stimmen

Kann grep nur Wörter anzeigen, die dem Suchmuster entsprechen?

Gibt es eine Möglichkeit, grep dazu zu bringen, "Wörter" aus Dateien auszugeben, die dem Suchausdruck entsprechen?

Wenn ich alle Instanzen von, sagen wir, "th" in einer Reihe von Dateien finden will, kann ich das tun:

grep "th" *

aber die Ausgabe wird in etwa so aussehen (Fettdruck von mir);

some-text-file : **the** cat sat on **the** mat  
some-other-text-file : **the** quick brown fox  
yet-another-text-file : i hope **this** explains it **thoroughly** 

Ich möchte mit der gleichen Suche Folgendes ausgeben:

the
the
the
this
thoroughly

Ist dies mit grep möglich? Oder mit einer anderen Kombination von Tools?

3voto

keebOo Punkte 73

Ich hatte ein ähnliches Problem und suchte nach grep/pattern regex und der Ausgabe "matched pattern found".

Am Ende verwendete ich egrep (dieselbe Regex auf grep -e oder -G lieferte mir nicht dasselbe Ergebnis wie egrep) mit der Option -o

Ich denke, das könnte etwas Ähnliches sein wie (ich bin KEIN Regex-Meister) :

egrep -o "the*|this{1}|thoroughly{1}" filename

-1voto

Sie könnten Ihre grep-Ausgabe wie folgt nach Perl leiten:

grep "th" * | perl -n -e'while(/(\w*th\w*)/g) {print "$1\n"}'

-1voto

kenorb Punkte 134883

ripgrep

Hier sind die Beispiele mit ripgrep :

rg -o "(\w+)?th(\w+)?"

Es werden alle Wörter gefunden, die mit th .

-2voto

pl1nk Punkte 1932
$ grep -w

Auszug aus der grep man-Seite:

-w: Wählen Sie nur die Zeilen mit Übereinstimmungen aus, die ganze Wörter bilden. Die Prüfung besteht darin, dass die übereinstimmende Teilzeichenkette entweder am Anfang der Zeile stehen oder ein Zeichen vorangestellt sein muss, das kein Wort darstellt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X