Ein Frage zu Ausgabe von grep und OSX Lion

M24A1

Mitglied
Thread Starter
Mitglied seit
30.11.2011
Beiträge
248
Guten Abend zusammen,
ich habe eine kleine Frage zu grep und reg. Ausdrücken

habe soeben gelesen das mit ^auf den Anfang und mit $ auf das Ende einer Zeile gesucht werden kann
Soweit so gut auf den Anfang geht es auch ohne Murren

nur wenn ich

grep -r $Anfang ./ eingebe kommt grep: warning: recursive search of stein

die man page gibt leider kein Beispiel her.

Bitte um eine kleinen Denkanstoß danke und schönen Abend

mfg M24A1
 

maceis

Aktives Mitglied
Mitglied seit
24.09.2003
Beiträge
16.876
... aufgelöst (zu einem Leerstring), ...
zu einem Leerstring?

Warum führen dann
Code:
grep -r "$Anfang" ./
oder
Code:
grep -r "" ./
nicht zum selben Fehler?

Anstelle von ./ genügt übrigens der einfache Punkt.

Gruß
maceis
 

debok

Mitglied
Mitglied seit
16.05.2011
Beiträge
284
Bei einfach nur $Anfang bekommt grep erst gar kein entsprechendes Argument übergeben (wenn Anfang nicht gesetzt ist). Bei "$Anfang" oder "" ist für grep erkennbar, dass da auf der Kommandozeile ein Argument ist (denn es wird übergeben) und es kann anders reagieren. BSD- und GNU-grep verhalten sich bei diesen Sonderfällen übrigens jeweils unterschiedlich.
 

maceis

Aktives Mitglied
Mitglied seit
24.09.2003
Beiträge
16.876
Nein, bei mir (grep (GNU grep) 2.5.1) nicht.
Welches System bzw. welche Version grep hast Du?

Und ja, Du hast recht. nicht Fehler sondern Warnung.
 

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.151
Ich weiß ja, worauf du hinaus willst. Lassen wirs. Ich meine, wenn ich "$Anfang" schreibe statt "" seh ich da kein Unterschied. Mit $Anfang (ohne "") wird ja einfach das Leerzeichen nicht gewertet und . als Pattern genommen und dann der stdin als input. Ich meine,

Code:
grep -r $Anfang ./
ist doch das gleiche wie
Code:
grep -r ./
Immer unter der Voraussetzung, Anfang ist nicht gesetzt ist, ..

Code:
Last login: Fri Jul 20 20:06:22 on ttys000
 xen@ radeon ~ 501
 $ grep -r "$Anfang" ./
./.android/adb_usb.ini:# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
./.android/adb_usb.ini:# USE 'android update adb' TO GENERATE.
./.android/adb_usb.ini:# 1 USB VENDOR ID PER LINE.

Last login: Fri Jul 20 20:04:48 on ttys000
 xen@ radeon ~ 501
 $ grep -r "" ./
./.android/adb_usb.ini:# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
./.android/adb_usb.ini:# USE 'android update adb' TO GENERATE.
./.android/adb_usb.ini:# 1 USB VENDOR ID PER LINE.
./.android/androidtool.cfg:### Settings for Android Tool
..

 xen@ radeon ~ 502
 $ grep --version
grep (GNU grep) 2.5.1
Bei dir nicht? Normales grep unter Lion. Die Warnung hab ich natürlich auch.

Code:
 $ grep -r ./
grep: warning: recursive search of stdin
 

M24A1

Mitglied
Thread Starter
Mitglied seit
30.11.2011
Beiträge
248
Hallo zusammen,

ich habe leider immer noch keine Lösung
wie suche ich auf das letzte Wort einer Zeile
ich habe nämlich festgestellt das die Eingabe von

grep "Anfang$" *.txt

mir auch die Datei als Fundort angibt, in der Anfang am Zeilenanfang steht.

Wie mach ich das wirklich nur die Datei mit "Anfang" am Zeilenende gelistet wird ?!

danke und mfg
M24A1
 

maceis

Aktives Mitglied
Mitglied seit
24.09.2003
Beiträge
16.876
Also bei mir geht:

Code:
% cat text.txt
Anfang Ende
% grep -e "Anfang$" text.txt
[I]Hier keine Ausgabe[/I]
% grep -e "Ende$" text.txt
Anfang Ende
% grep -e "^Anfang" text.txt
Anfang Ende
Wie erwartet!
 

M24A1

Mitglied
Thread Starter
Mitglied seit
30.11.2011
Beiträge
248
@Maceis bei mir auch dein Beispiel ;) danke
nun geht auch meins hatte nix mit grep zu tun sondern ein Logikfehler meiner
kleinen Denkmurmel ,)
In der einen Datei bestand die Zeile nur aus dem Wort "Anfang", logisch das diese immer angezeigt wird ,)

sry klar mein Fehler ;)

schönen noch mfg M24A1
 
Oben