grep Hilfe ?? Ausdruck finden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
plato13
Beiträge: 19
Registriert: 21.08.2007 07:31:30
Wohnort: Kreis Vie

grep Hilfe ?? Ausdruck finden

Beitrag von plato13 » 04.12.2007 11:04:15

Hallo zusammen,

habe ein kleines Problem mit grep

habe eine Dastei mit folgendem Aufbau

Sun Dec 2 22:10:57 xxx.xxx.xxx.xxx

Nun möchte ich gerne alle Einträge erfassen in einer txt Datei die auf den Dec 2 zutreffen.

Habe versucht mit cat *.log |grep -il Dec 2 |awk '{print $2, $3, $4}' >testlog.txt
doch dann bekomme ich eine Fehlermeldung die lautet
grep 2 Datei oder Verzeichnis nicht gefunden

auch wenn ich den Ausdruck in " Dec 2 " setze.

Was mache ich da falsch? kann man keine Ausdrücke mit Leerzeichen dazwischen suchen?

Danke und Gruß
wird noch ausgefüllt. . .

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 04.12.2007 11:16:51

Code: Alles auswählen

beni@gargamel:~$ grep -il "Dec *2" /var/log/*
acpid
auth.log
auth.log.0
dmesg
dmesg.0
kern.log.0
mail.info
mail.log
messages
messages.0
;)

cat schreibt über STDIN an grep, aus diesem Grund kann grep nicht die Dateien finden, da es nur eine Datei gibt, die durchgreppt wird. das "cat" ist in vielen Fällen in Zusammenhang mit Grep unnötig.
Du musst beim Pattern genau auf die Zeichen achten. Wenn du nur ein Leerzeichen angibst, dann ist da auch nur ein Leerzeichen im Muster. " *" bedeutet "mehrere Lehrzeichen"
Perl macht Spass.

Benutzeravatar
plato13
Beiträge: 19
Registriert: 21.08.2007 07:31:30
Wohnort: Kreis Vie

Beitrag von plato13 » 04.12.2007 11:41:09

Hallo habe es probiert,

aber irgendwie klappt es nicht so wie ich das möchte

möchte das ergebnis in eine textdatei schreiben und ich möchte nur das eine log auslesen weiss ja welches !!

Habe deinen obigen Befehl mal ausprobiert mit
grep -il "Dec *2" /var/log/xferlog >testlog.txt

doch dann schreibt er nur /var/log/xferlog in die txt Datei will aber die Zeilen die zutreffen in der Datei stehen haben

Was mache ich da noch falsch??

Danke
wird noch ausgefüllt. . .

green_martian
Beiträge: 19
Registriert: 01.07.2004 11:36:37
Wohnort: Aurich

Beitrag von green_martian » 04.12.2007 12:25:56

Hallo,

grep -l oder --files-with-matches gibt immer nur die Dateinamen aus. Siehe man grep.
Mit awk wiederum kann man die Suche auch gleich ohne grep durchführen.

Code: Alles auswählen

awk '/dec *2/i {print $2, $3, $4}' *.log > testlog.txt

Gruß Thorsten

Benutzeravatar
plato13
Beiträge: 19
Registriert: 21.08.2007 07:31:30
Wohnort: Kreis Vie

Beitrag von plato13 » 04.12.2007 12:40:45

Hallo,

vielen Dank

aber das klappt auch nicht dann wird trotzdem alles aufgelistet auch die Daten vom Dec 1. Das soll aber nicht will immer nur vom Vortag die Daten auslesen.

Was ist denn da noch falsch?

Danke
wird noch ausgefüllt. . .

Benutzeravatar
plato13
Beiträge: 19
Registriert: 21.08.2007 07:31:30
Wohnort: Kreis Vie

Beitrag von plato13 » 04.12.2007 13:14:55

Habs durch probieren hin bekommen

cat xferlog | grep "Dec *3" | awk '{print $8, $12}' >testlog.txt


Gruß
wird noch ausgefüllt. . .

green_martian
Beiträge: 19
Registriert: 01.07.2004 11:36:37
Wohnort: Aurich

Beitrag von green_martian » 04.12.2007 13:19:07

Hallo und sorry.

ich sehe gerade selbst, dass das mit awk so erst einmal nicht funktioniert.
Also ohne dem i sollte auch das erst einmal gehen.

Aber mit grep:

Code: Alles auswählen

grep -i "Dec *2" *.log > testlog.txt
Gruß Thorsten

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 04.12.2007 13:44:12

Eigentlich sollte es aber mit dem awk funktionieren.

Code: Alles auswählen

daniel-laptop:/var/log# awk '/Dec  2/ {print $1, $2, $5}' syslog.0 | tail -10
Dec 2 avahi-daemon[4631]:
Dec 2 avahi-daemon[4631]:
Dec 2 mountd[4720]:
Dec 2 rpc.statd[4823]:
Dec 2 kernel:
Dec 2 kernel:
Dec 2 kernel:
Dec 2 kernel:
Dec 2 kernel:
Dec 2 exiting
Oh, yeah!

Antworten