Mit grep zu finden-string mit Klammern
Ich habe einige Probleme mit dem Befehl "grep". Ich habe die folgenden zwei Dateien in meinem Ordner:
test.dat:
fdf
bla(fd_bla_bla) =&
bdf bla
test2.dat
fd
fd
fij
d
bla(fdf)
fdjk
bla
Nun Suche ich für das bla mit Klammern, nachdem es mit
grep 'bla(*)' *
aber es macht mir einfach den Eintrag der ersten Datei...hast du eine Idee warum?
InformationsquelleAutor Guiste | 2013-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie reguläre Ausdrücke, um zu tun, entsprechen.
geben das richtige Ergebnis.
InformationsquelleAutor thefourtheye
Ihre
grep 'bla(*)' *
wird nicht funktionieren, denn es sieht fürbla)
oderbla(((((((()
ist , 0 oder viele(
nachbla
dann gefolgt von ein)
nur:
(
im Muster übereinstimmen würden, wörtliche(
\b
(word boundary) wird grep matchfoo bla(..)
undbla(xx)
, aber nichtfoobla(xxx)
.\b
,grep 'bla('
würde auch funktionierenInformationsquelleAutor Kent
Dies sagen grep-Sonderzeichen verwenden wie eine normale (Fixe) string.
InformationsquelleAutor Payam
Brauchen Sie nur
.*
statt*
Regex
.*
abgestimmt jede beliebige Zeichenfolge mit 0 oder mehr Länge.*
wird von shell-GLOB-mit einem text von willkürlichen Suche abergrep
nichtGLOB
.ODER für Wortgrenzen:
ODER mit awk:
InformationsquelleAutor anubhava
InformationsquelleAutor Vijay
funktionieren sollte. ( müssen nicht escaped werden, da es bedeutet grouping in regex, die wir nicht brauchen .
InformationsquelleAutor user917279
Andere Lösung ist, dass, wenn Ihr string fester string und enthält Klammern. also mit Hilfe von grep -F können Sie Ihre Schnur fest, und er wird suchen, wie es ist.
cat enb.txt | grep -F '[PHY][I]UE'
**Katze enb.txt ist der name der Datei wo ich will, zu fangen.
grep -F '[PHY][I]UE'
grep -F die saite wird diese'[PHY][I]UE'
Behoben.versuchen, diese, ich hoffe, es wird
InformationsquelleAutor Zainul Abideen