ubuntuusers.de

Shell/Tipps_und_Tricks

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |
Dieses Thema ist die Diskussion des Artikels Shell/Tipps_und_Tricks.

Lux Team-Icon

(Themenstarter)
Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

WinXP to Edgy schrieb:

Nachtrag: Wenn ich "Mueller-Meiller" ausschließen wollte, würde ich in einer csv eher

grep "Mu.*ller\;" datei.csv

eingeben.

Na, ja, wenn Du Muller oder Mueller suchst, wäre es schon sinnvoll Mue*ller zu suchen, oder? Vielleicht noch besser egrep "Mue{0,1}ller".

Oder weitergehend egrep "M(ü|ue)ller".

Gruss

Dirk

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

noisefloor schrieb:

(matcht übrigens auch außerhalb von Python ☺ )

Gruß, noisefloor

Die bash erzählt mir aber etwas anderes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
dirk@testbock:~$ cat datei.csv 
Müller;das wird gesucht
Muller;so wird es manchmal geschrieben
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
Müller-Meiler;als Gegenprobe
Mueller-Meiler;auch dies eine Gegenprobe
Muller-Meiler;und noch eine Gegenprobe
dirk@testbock:~$ grep "Mu.*ller\;" datei.csv 
Muller;so wird es manchmal geschrieben
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
dirk@testbock:~$ 

@Lux: Auch nicht so ganz.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
dirk@testbock:~$ cat datei.csv 
Müller;das wird gesucht
Muller;so wird es manchmal geschrieben
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
Mu&258ller;fiktiver Umsetzungscode
Müller-Meiler;als Gegenprobe
Mueller-Meiler;auch dies eine Gegenprobe
Muller-Meiler;und noch eine Gegenprobe
dirk@testbock:~$ 
dirk@testbock:~$ grep "Mu.*ller\;" datei.csv 
Muller;so wird es manchmal geschrieben
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
Mu&258ller;fiktiver Umsetzungscode
dirk@testbock:~$ 

Vor allem um das:

Mu&258ller;fiktiver Umsetzungscode

ging es mir ja auch.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

Ihr solltet euch drauf einigen, ob jetzt Mueller-Meiller oder Mueller-Meiler. Bei letzterem matcht "Mu.*ller\;" imho (ungetestet) nicht 😉

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Stimmt. Mist! Das §$%/&)!-greedy-Problem.

Nachtrag: Andererseits: so tragisch ist das auch nicht. Denn wie oft kommt es in der Realität vor, dass sich das Muster nach dem Stern exakt wiederholt? Sinnlos ist das ".*" mMn erst dann, wenn sich das auch ohne die erwähnten Nachteile durch andere reguläre Ausdrücke abbilden ließe. Das sehe ich bisher allerdings nicht.

Nachtrag: und noch eines: der "Tipp" mit dem regulären Ausdruck ".+" hilft ja noch nicht einmal weiter, um Ergebnisse mit "Meiller" auszuschließen:

1
2
3
4
5
6
dirk@testbock:~$ egrep Mu.+ller datei.csv 
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
Mu&258ller;fiktiver Umsetzungscode
Mueller-Meiller;auch dies eine Gegenprobe
Muller-Meiller;und noch eine Gegenprobe
dirk@testbock:~$

Letzten Endes bleibt hier nur die gute alte Pipe:

1
2
3
4
5
dirk@testbock:~$ grep Mu.*ller datei.csv | grep -v Mu.*ller-
Muller;so wird es manchmal geschrieben
Mueller;und so, wenn keine Umlaute zur Verfügung stehen
Mu&258ller;fiktiver Umsetzungscode
dirk@testbock:~$ 

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

An dieser Stelle möchte ich mich nochmals nachdrücklich für die Löschung des Absatzes mit den regulären Ausdrücken aussprechen. Aus folgenden Gründen:

1. Das, was dort steht, mag sachlich ja zutreffend sein und als Gedankenspiel ganz nett; davon abgesehen habe ich aber oben gezeigt, dass die Anwendung der Regex ".*" durchaus sinnvoll sein kann: nämlich, wenn man bei der Suche mit einem Gesamtausdruck nicht genau weiß, ob und ggf. welche und wie viele Zeichen an Stelle des Jokerzeichens stehen.

2. Das Problem, dass durch den Gebrauch von ".*" auch Records gefunden werden, die das Muster nach dem Stern an anderer Stelle wiederholen, wird durch den Gebrauch von ".+" nicht behoben.

3. Das Metazeichen "+" steht nur unter egrep zur Verfügung. Wer das nicht weiß und den "Tipp" mit dem normalen grep-Befehl ausprobiert, wird erst einmal Schiffbruch erleiden (auch im Hauptartikel, auf den verwiesen wird, ist die Problematik mit den erweiterten Metazeichen nur sehr indirekt und zwischen den Zeilen beschrieben).

4. Vor dem Hintergrund von Nr. 3 sehe ich auch nicht, warum es komplizierter sein soll, ".*" an Stelle von ".+" einzugeben, im Gegenteil. Dass das Suchergebnis dann erheblich von den Erwartungen abweicht, dürfte auch ziemlich unwahrscheinlich sein.

Gibt es noch Einwände, die ich bisher nicht berücksichtigt habe?

Lux Team-Icon

(Themenstarter)
Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

WinXP to Edgy schrieb:

Gibt es noch Einwände, die ich bisher nicht berücksichtigt habe?

Dieser Thread ist voll von Gegenbeispielen ...

Gruss

Dirk

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

... auf die ich auch erwidert habe. Welches Gegenbeispiel habe ich vergessen?

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

*Seufz*

Dann bleibt es eben mit ergänzendem Hinweis drin.

HenningThielemann

Anmeldungsdatum:
10. April 2012

Beiträge: Zähle...

Man kann doch statt

tar cf -

auch

tar c

schreiben.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4444

Wohnort: Göttingen

Hi,

ich würde einen kurzen Absatz zu

sudo !!

und zu dem Tastenkürzel Alt + . schreiben. Das würde hier doch schon mit reinpassen, oder?

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

denke schon.

Gruß, noisefloor

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4444

Wohnort: Göttingen

Ok, habe mal zwei Absätze am Ende der Seite hinzugefügt.

Antworten |