[gelöst] Wildcards

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
L3xiE
Beiträge: 7
Registriert: 07.10.2012 21:44:31
Wohnort: Berlin

[gelöst] Wildcards

Beitrag von L3xiE » 08.10.2012 21:40:02

Hi,

ich setze mich gerade mit dem Thema Wildcards auseinander und habe folgendes Beispiel entdeckt, was ich nicht ganz raffe.

Code: Alles auswählen

    grep ' 0.0 1[ ]*$'


[ ] ---> dieses Zeichen wird ja beispielsweise benutzt, um nach bestimmten Kriterien zu filtern ( z.B. [2-4] --> Es werden druch grep nur Zeilen gezogen, in denen sich eine 2, 3 oder 4 befindet).

Soll das [ ] nur als Leerzeichen dienen? Das * Symbol dient ja der Ersetzung beliebig vieler Zeichen und jedweder Zeichenanordnung, aber welche Funktion besitzt die Symbolik *$? In meiner Literatur und im Internet konnte ich nichts über diese beiden Wildcards bzw. Platzhalter in Erfahrung bringen (auch unter Zuhilfenahme von STRG+F).

Edit:

Code: Alles auswählen

VAL=$(grep -v NaN Daten.dat | grep ' 0.0 1[ ]*$' | wc -l)
Welche Funktion hat das Dollarzeichen hinter dem Sternchen? Das kann ich auch nicht ganz nachvollziehen.
Zuletzt geändert von L3xiE am 09.10.2012 20:03:56, insgesamt 1-mal geändert.

yeti

Re: Wildcards

Beitrag von yeti » 08.10.2012 21:55:32

"man 1 grep"?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Wildcards

Beitrag von Cae » 08.10.2012 21:56:03

Du schmeißt gerade Reguläre Ausdrücke und Shell-Expansion zusammen.

Code: Alles auswählen

$ ls [1-3]foo
$ ls bar{1,3,4}
Das ist Shell-Expansion. Die Shell erweitert die Argumente, bevor sie an ls weitergegeben werden. ls wird also effektiv so aufgerufen:

Code: Alles auswählen

$ ls 1foo 2foo 3foo
$ ls bar1 bar3 bar4
grep hat damit *nichts* zu tun. Das arbeitet mit regulären Ausdrücken.

Code: Alles auswählen

$ echo -e "foo1\nfoo2\nfoo3\nfooo" | grep 'foo[23o]'
foo2
foo3
fooo
Durch [] wird hier eine Gruppe von Zeichen angegeben, die an einer bestimmten Stelle stehen dürfen. Es sind keine Kommata , dazwischen. Außerdem kann man mit *, ? und + sowie {} die Häufigkeit angeben.

Genau das passiert in deinem Beispiel: Ein Leerzeichen, das beliebig oft vorkommen darf.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
L3xiE
Beiträge: 7
Registriert: 07.10.2012 21:44:31
Wohnort: Berlin

Re: [gelöst] Wildcards

Beitrag von L3xiE » 09.10.2012 20:04:30

Danke. :-)

Antworten