nach variablen mit grep suchen

N

net-zwreg

Grünschnabel
Hallo
Ich kenne mich nicht besonders toll mit grep aus, und hätte da mal ne Frage:

Ich will mit grep meine Implementierungen nach Variblen und Funktionen durchsuchen und anzeigen lassen. Wie muss ich grep dann einstellen?

Ich habe es schon mal versucht, nach folgendem Muster zu suchen:

typename (Leerzeichen) variablenname (Lerrzeichen) (= oder ;) (eventuell [(Leerzeichen) (String)]ein oder mehrmals)

Allerdings, wenn ich grep dann ausführe findet er nichts. Die Syntax sieht bei mir folgendermaßen aus:
-E [a-zA-Z]{,1}\s+[\w|\W]{,1}\s+[=\|;]{,1}\s+[\<\w]+

Ich weiß, sehr unübersichtlich, aber wie gesagt, ich kenne mich mit grep nicht aus, und im Internet finde ich keine Anschaulichen beispiele

Danke für eure Hilfe
 
Dein regex stimmt so nicht.

Code:
{,1}

bedeutet: Erkenne min. 0 zeichen, max. 1 Zeichen.

Was nicht das sein dürfte was du willst.

Auch dieses

Code:
[\w|\W]

Konstrukt ist sehr fragwürdig.

Lies dir doch mal das hier durch, speziell die weiterführenden Links enthalten leichtverständliche Tutorials.
 
Danke ,aber das hilft mir leider auch nicht weiter, mittlerweile, habe ich einen neuen versuch gestartet, der folgendermaßen aussieht:
-E "^.+ {1,}[\w\|_]+ {1,}[=\|;]{1} \"*[\w\|\W]*\"*"
D.h. bzw. das "soll" heißen:

Suche am Anfang einer Zeile nach einem oder mehreren Buchstaben = typename
dann mindestens ein Leerzeichen
dann ein oder mehrere alphanumerische zeichen oder ein _
wieder ein oder mehrere Leerzeichen
ein = oder ein ; eines von beiden "muss" vorhanden sein
dann ein oder mehrere alphanumerische Zeichen in ""
 
Code:
-E '^[[:alpha:]]+ +([[:alnum:]]+|_) +(;|=)"[[:alnum:]]+"'

Gruss, Xanti
 
Zuletzt bearbeitet:
Danke Xanti für deine Mühe, aber das funktioniert bei mir gar nicht. Habe aber trotzdem eine paar Frage dazu:
Warum zwei [[ bzw. ]]?
Außerdem ist mir nicht ganz klar was du mit
([[:alnum:]]+|_) meinst. Ich suche etwas, was mir z.B. folgende Ausdrücke ausgibt:

DB db_Main = null;
DB dbwert = " Wer Rechtschreibfehler findet, darf sie behalten";
 
Das dies nicht funktioniert, hat wahrscheinlich zwei Gründe:

1. welche Version von grep hast Du (nebst Betriebssystem)
2. Solltest Du Deine Aufgabenstellung etwas konkreter stellen

Mein regexp tut das, was Du hier wolltest:

net-zwreg schrieb:
Suche am Anfang einer Zeile nach einem oder mehreren Buchstaben = typename
dann mindestens ein Leerzeichen
dann ein oder mehrere alphanumerische zeichen oder ein _
wieder ein oder mehrere Leerzeichen
ein = oder ein ; eines von beiden "muss" vorhanden sein
dann ein oder mehrere alphanumerische Zeichen in ""

Auf Deine (im letzten Post gebrachten) Beispielzeilen matcht

Code:
-E '^[[:alpha:]]+ +[[:alnum:]_]+ +(;|=)'

Zu Deiner Frage:

[:alpha:] ... sind Posix-Klassen. Wenn Du sie in einer Mengenangabe in grep benutzen willst, sind es halt [[...]]-ähnliche Konstrukte.

([[:alnum]]+|_) entspricht :

net-zwreg schrieb:
dann ein oder mehrere alphanumerische zeichen oder ein _
 
Ich habe die Version grep 2.5.1a
Betriebssystem Windows XP
Sorry meinte alphanumerische Zeichen oder ein oder mehrere _ zwischen den Zeichen also etwa sowas: db_Main

Der Zweck ist halt, wie ich im ersten Post geschrieben habe eine suche nach variablen in der Form:
typname varname =|; Wert|Ausdruck
 

Ähnliche Themen

Last mit etc/passwd anzeigen lassen

grep und Variablen

Nach Muster in Datei suchen und durch Variable ersetzen

HP PSC 2175 - CUPS druckt nicht

kompilier problem

Zurück
Oben