hi!
grep '^([^ ]+) ([^ ]+) ([^ ]+) ([[^]]+]) "(.*) (.*) (.*)" ([0-9-]+) ([0-9-]+) (www.|)(example.org) "(.*)" "(.*)" "(.*)"$' dateiname
Also du musst auf jeden Fall egrep aufrufen, da das ein erweiterter
regulärer Ausdruck ist. Und offensichtlich bist du etwas über die
Zeichenklassen gestolpert:
Most metacharacters lose their special meaning inside lists. To
include a literal ] place it first in the list. Similarly, to
include a literal ^ place it anywhere but first. Finally, to
include a literal - place it last.
Ergibt dann:
egrep '[1]+ [^ ]+ [^ ]+ [[^]]+] ".*" [0-9-]+ [0-9-]+ subdomain.test.de ".*" ".*" ".*"' access-log
Fernziel, aber soweit bin ich noch nicht, ist eine backreference
im Dateinamen, so dass ich alle Zeilen ausgeben lassen kann in
eine Datei, die den vhost im Dateinamen trägt.
Hm, ich glaube nicht, dass das so einfach möglich ist mit einem
einfachen Kommandozeilenaufruf. Du kannst ja keine Backreferences
aus dem grep nach draußen weitergeben, um dadurch irgendwelche
Dateinamen zu beeinflussen (das wäre ja nicht mal ein grep-Parameter,
sondern das Ziel einer >-Umleitung). Und mit älteren grep-Versionen
(<2.5) kann man auch keine Teilstrings aus einer Zeile ausschneiden.
Die einfachste Lösung wäre IMHO, ein kleiner Skript zu schreiben, das
diese Aufgabe erledigt. In Perl zb. wäre das etwa ein Zehnzeiler.
bye, Frank!
Never argue with an idiot. He will lower you to his level and then
beat you with experience.
^ ↩︎