Hilfe beim Suchmusterbau gesucht

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Zwerg
Beiträge: 397
Registriert: 26.12.2005 00:10:09
Wohnort: Magrathea
Kontaktdaten:

Hilfe beim Suchmusterbau gesucht

Beitrag von Zwerg » 22.04.2006 22:46:54

Hallo,

war mir nicht sicher wo ich das fragen soll, diese sparte schien mir noch am sinnvollsten :)

Ich habe eine Logdatei die sich wie folgt aufbaut:
[IP] - [User] [Weiter informationen]
Zeilen könnten zum Beispiel so aussehen:
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
127.0.0.1 - - "bli bla blub" - "blabla"
Wie kann ich mir mittels Grep nur die Zeilen anzeigen lassen die einen User enthalten, also NICHT "-" sind.

Ich war schon bei

Code: Alles auswählen

cat datei | grep "[0-255]\.[0-255]\.[0-255].\[0-255]"
Das gibt mir logischer weise alle Zeilen aus.
Ich weis nur nicht wie ich das Suchmuster richtig aufbauen muss :(

Wäre toll wenn mir da jemand Beistand leistet!

Vielen Dank!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 22.04.2006 23:47:04

schnell mal einige Möglichkeiten runtergetippt:

mit grep:

Code: Alles auswählen

root@gms1:~# grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ *- *[^- ]" datei.txt 
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
mit awk:

Code: Alles auswählen

root@gms1:~# awk -F '-' '($2 ~ /\w/){print $0}' datei.txt
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
mit perl:

Code: Alles auswählen

root@gms1:~# perl -ne '@t=split(/-/);print $_ if $t[1] =~ /\S/;' datei.txt
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
root@gms1:~# perl -ne 'print if /^[\d\.]+\s*-\s*[^\s-]+/' datei.txt
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
Gruß
gms
Zuletzt geändert von gms am 22.04.2006 23:55:05, insgesamt 1-mal geändert.

Zwerg
Beiträge: 397
Registriert: 26.12.2005 00:10:09
Wohnort: Magrathea
Kontaktdaten:

Beitrag von Zwerg » 22.04.2006 23:53:34

gms hat geschrieben:schnell mal einige Möglichkeiten runtergetippt:

mit grep:

Code: Alles auswählen

root@gms1:~# grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ *- *[^- ]" datei.txt 
mit awk:

Code: Alles auswählen

root@gms1:~# awk -F '-' '($2 ~ /\w/){print $0}' datei.txt
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
mit perl:

Code: Alles auswählen

root@gms1:~# perl -ne '@t=split(/-/);print $_ if $t[1] =~ /\S/;' datei.txt
root@gms1:~# perl -ne 'print if /^[\d\.]+\s*-\s*[^\s-]+/' datei.txt
127.0.0.1 - Zwerg2 "bliblablub" - "blabla"
Gruß
gms
Sau geil!

Vielen vielen dank!
Kennst du zufällig ein paar gut Links wo so etwas erklärt ist? Will da ja auch mal selbst richtig hintersteigen.

MFG

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 23.04.2006 00:00:26

Die Regular Expressions von Perl sind am mächtigsten, daher würde ich dir diese Seite empfehlen:
http://perldoc.perl.org/perlre.html

Gruß
gms

Zwerg
Beiträge: 397
Registriert: 26.12.2005 00:10:09
Wohnort: Magrathea
Kontaktdaten:

Beitrag von Zwerg » 23.04.2006 00:02:38

Ok, vielen Dank!

Antworten