RE: Re: awk script zum inkrementieren

2003-10-03 Diskussionsfäden Gebhard Dettmar
Hallo Jan,
vielen, vielen Dank.
In Wirklichkeit läuft auch dein erstes Script, nur dass es die von
sessionize.pl erzeugte Session-Nr als $1 belässt. Ich kannte leider die -v
Option nicht und wusste nicht, wie ich die Startwerte als Parameter
definiere. Das gewünschte Format ergibt sich also mit Script 2 (wie unten,
aber statt \VisitorID=%d; SessionID=%s\
\VisitorID=%d; SessionID=%d\) und 
sort sess.log | tr -d '\r' | gawk -v visitor=1 -v session=2 -f
log.awk cookie.log
entsprechend der Definition in WUMprep logfileFormats.txt:
Cookie
picasso.wiwi.hu-berlin.de - - [10/Dec/1999:23:06:31 +0200] GET /index.html
HTTP/1.0 200 3540 http://www.berlin.de/; Mozilla/3.01 (Win95; I)
VisitorID=10001; SessionID=20001
Also nochmal danke, du hast mir tagelanges Trial and Error ohne Ergebnis
erspart.
Gruß Gebhard

-Original Message-
From: Jan Trippler [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, October 01, 2003 11:29 PM
To: Debian-User-German
Subject: Re: Re: awk script zum inkrementieren

Am Mittwoch, 1. Oktober 2003 13:59 schrieb Gebhard Dettmar:
[Beispiel-Datei]

Eins war mir noch nicht ganz klar, Du hast geschrieben, dass *die 
Session-ID aus den realen Sessions gebildet werden soll* - ich habe 
jetzt mal einfach angenommen, dass in der Session-ID der ursprüngliche 
Wert stehen soll und das Script entspr. geändert.

Das Script kannst Du auf 2 Wegen aufrufen:
als Shell-Script:
log.sh
sort session.log | tr -d '\r' | \
awk ' BEGIN { prev = ; }
  $1 != prev { prev = $1; visitor ++; }
  { printf %s \VisitorID=%d; SessionID=%s\\n,
   substr ($0, length($1) + 2), visitor, $1;}
' visitor=1 neues_log
/log.sh

oder als awk-Script:
log.awk
BEGIN { prev = ; }
  $1 != prev { prev = $1; visitor ++; }
  { printf %s \VisitorID=%d; SessionID=%s\\n,
   substr ($0, length($1) + 2), visitor, $1;}
/log.awk
dann aber mit folgender Syntax (eine Zeile):
sort session.log | tr -d '\r' | awk -v visitor=1 -f log.awk 
neues_log

Der tr mittendrin dient der Beseitigung des DOS-Zeilenendes (ich weiss 
nicht, ob die Originaldatei auch damit ankommt).

Jan


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an
[EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED]
(engl)


--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: awk script zum inkrementieren

2003-10-03 Diskussionsfäden Frank Evers
On Freitag, 3. Oktober 2003 17:12, Gebhard Dettmar wrote:
 Hallo Jan,
 vielen, vielen Dank.
 In Wirklichkeit läuft auch dein erstes Script, nur dass es die von
 sessionize.pl erzeugte Session-Nr als $1 belässt. Ich kannte leider die
 -v Option nicht und wusste nicht, wie ich die Startwerte als Parameter
 definiere. 

Außer der -v Option gibt es noch min. zwei Wege Startparameter zu 
übergeben:

1. im Script innerhalb von BEGIN {}, wie auch bei Jan zu sehen
2. du kannst Startwerte als Argumente übergeben, z.B. im Anschluß an die 
zu verarbeiteten Dateien, und aus dem Array ARGV[] in dem die Argumente 
ab ARGV[1] stehen, du mußt allerdings ggf. ARGC (die Zahl der Argumente) 
im Awk-Script anpassen, damit deine Startwerte nicht als zu verarbeitende 
Dateien interpretiert werden.

HTH

[ToFu gelöscht!]
-- 
Gruß Frank


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



RE: Re: awk script zum inkrementieren; angehängt: beispielSessionized.zip

2003-10-01 Diskussionsfäden Gebhard Dettmar
 ich habe den Eindruck, dass meine Mails nicht in der Liste ankommen, 
 deshalb forwarde ich sie ausnahmsweise mal.
Meine auch nicht; habe auf den ersten Versuch, meine Anfrage zu verschicken,
sogar eine Antwort von meinem Mailer-Daemon (den ich im ersten Moment für
eine Swen-Mail hielt) gekriegt:
- Transcript of session follows -
... while talking to murphy.debian.org.:
 RCPT To:[EMAIL PROTECTED]
 550 [EMAIL PROTECTED]: User unknown
550 [EMAIL PROTECTED]... User unknown
--
Der 2. Anlauf klappte dann.
--
 Ein paar Beispielzeilen wären sehr hilfreich gewesen.
Allerdings, sorry. Hab ein paar angehängt. Du hast das das aber ganz richtig
erschlossen.
Leider kriege ich widersprüchliche Fehlermeldungen:
gawk: awk.txt:4:  session=20001 visitor=10001
gawk: awk.txt:4:   ^ syntax error
Häh? Ich rufe über gawk -f auf, hab das Script im Beispiellog nochmal unten
drangehängt.
Also vielen Dank erstmal und Gruß
Gebhard

-Original Message-
From: Jan Trippler [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 30, 2003 9:23 PM
To: Gebhard Dettmar
Subject: Fwd: Re: awk script zum inkrementieren
Importance: High

Hallo Gebhard,

ich habe den Eindruck, dass meine Mails nicht in der Liste ankommen, 
deshalb forwarde ich sie ausnahmsweise mal.

Gruß
Jan

--  Weitergeleitete Nachricht  --

Subject: Re: awk script zum inkrementieren
Date: Tue, 30 Sep 2003 20:31:36 +0200
From: Jan Trippler [EMAIL PROTECTED]
To: [EMAIL PROTECTED]

Am Dienstag, 30. September 2003 16:09 schrieb Gebhard Dettmar:
[...]

 - $1 wird zu $2, $1 ist nun die Sess.-Nr. Sortiert ist das ganze
 weiterhin
 nach Timestamps. Das habe ich nach Session Nr. sortiert in sort.log
 geschrieben und moechte jetzt ein awk-Script drueberlaufen lassen,
 das ans Zeilenende Session- und VisitorID setzt und in dem Fall, dass
 $1 ungleich $1 aus der vorausgehenden Zeile ist, Session- und
 VisitorID um 1 inkrementiert
 (a la
 '$1 != prev {print $0, $(NF+1)=SessionID=i++} for i=10001 o.s.„.),
 so dass
 jede Session eine je eigene Session-/VisitorID am Ende hat.

[...]

Ein paar Beispielzeilen wären sehr hilfreich gewesen. Ich denke mal, es
sieht so aus:
Session-ID  IP irgendwas
0815  111.222.000.111 ...
und Du willst es so haben:
Session-ID  IP irgendwas Dein_neues_Ende
0815  111.222.000.111 ... VisitorID=10001; SessionID=20001

und das ganze so, dass ein (mir unbekannter Startwert) der Session- und
Visitor-ID jedesmal inkrementiert wird, wenn sich Spalte 1 ändert.
Korrekt?

Das geht mit awk z. B. so (ungetestet):

awk ' BEGIN { prev = -1; }
  $1 != prev { prev = $1; session ++; visitor ++; }
  { printf %s VisitorID=%d; SessionID=%d\n, $0,session,visitor;}
' session=20001 visitor=10001 sort.log neues_log

wobei die Werte 20001 und 10001 die Startwerte sind.

Jan

---


beispielSessionized.zip
Description: Binary data


RE: Re: awk script zum inkrementieren; angehängt: beispielSessionized.zip

2003-10-01 Diskussionsfäden Gebhard Dettmar
 ich habe den Eindruck, dass meine Mails nicht in der Liste ankommen, 
 deshalb forwarde ich sie ausnahmsweise mal.
Meine auch nicht; habe auf den ersten Versuch, meine Anfrage zu verschicken,
sogar eine Antwort von meinem Mailer-Daemon (den ich im ersten Moment für
eine Swen-Mail hielt) gekriegt:
- Transcript of session follows -
... while talking to murphy.debian.org.:
 RCPT To:[EMAIL PROTECTED]
 550 [EMAIL PROTECTED]: User unknown
550 [EMAIL PROTECTED]... User unknown
--
Der 2. Anlauf klappte dann.
--
 Ein paar Beispielzeilen wären sehr hilfreich gewesen.
Allerdings, sorry. Hab ein paar angehängt. Du hast das das aber ganz richtig
erschlossen.
Leider kriege ich widersprüchliche Fehlermeldungen:
gawk: awk.txt:4:  session=20001 visitor=10001
gawk: awk.txt:4:   ^ syntax error
Häh? Ich rufe über gawk -f auf, hab das Script im Beispiellog nochmal unten
drangehängt. Vielleicht kannst du mal gucken, ob es bei dir läuft, ich habe
hier auf Arbeit UnixUtils for Win32 und kriege öfters Fehlermeldungen von
Scripts, die zu Hause laufen, dass ich nicht weiß, ob ich denen trauen soll.
Also vielen Dank erstmal und Gruß
Gebhard

-Original Message-
From: Jan Trippler [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 30, 2003 9:23 PM
To: Gebhard Dettmar
Subject: Fwd: Re: awk script zum inkrementieren
Importance: High

Hallo Gebhard,

ich habe den Eindruck, dass meine Mails nicht in der Liste ankommen, 
deshalb forwarde ich sie ausnahmsweise mal.

Gruß
Jan

--  Weitergeleitete Nachricht  --

Subject: Re: awk script zum inkrementieren
Date: Tue, 30 Sep 2003 20:31:36 +0200
From: Jan Trippler [EMAIL PROTECTED]
To: [EMAIL PROTECTED]

Am Dienstag, 30. September 2003 16:09 schrieb Gebhard Dettmar:
[...]

 - $1 wird zu $2, $1 ist nun die Sess.-Nr. Sortiert ist das ganze
 weiterhin
 nach Timestamps. Das habe ich nach Session Nr. sortiert in sort.log
 geschrieben und moechte jetzt ein awk-Script drueberlaufen lassen,
 das ans Zeilenende Session- und VisitorID setzt und in dem Fall, dass
 $1 ungleich $1 aus der vorausgehenden Zeile ist, Session- und
 VisitorID um 1 inkrementiert
 (a la
 '$1 != prev {print $0, $(NF+1)=SessionID=i++} for i=10001 o.s.„.),
 so dass
 jede Session eine je eigene Session-/VisitorID am Ende hat.

[...]

Ein paar Beispielzeilen wären sehr hilfreich gewesen. Ich denke mal, es
sieht so aus:
Session-ID  IP irgendwas
0815  111.222.000.111 ...
und Du willst es so haben:
Session-ID  IP irgendwas Dein_neues_Ende
0815  111.222.000.111 ... VisitorID=10001; SessionID=20001

und das ganze so, dass ein (mir unbekannter Startwert) der Session- und
Visitor-ID jedesmal inkrementiert wird, wenn sich Spalte 1 ändert.
Korrekt?

Das geht mit awk z. B. so (ungetestet):

awk ' BEGIN { prev = -1; }
  $1 != prev { prev = $1; session ++; visitor ++; }
  { printf %s VisitorID=%d; SessionID=%d\n, $0,session,visitor;}
' session=20001 visitor=10001 sort.log neues_log

wobei die Werte 20001 und 10001 die Startwerte sind.

Jan

---


beispielSessionized.zip
Description: Binary data


Re: Re: awk script zum inkrementieren

2003-10-01 Diskussionsfäden Jan Trippler
Am Mittwoch, 1. Oktober 2003 13:59 schrieb Gebhard Dettmar:
[Beispiel-Datei]

Eins war mir noch nicht ganz klar, Du hast geschrieben, dass *die 
Session-ID aus den realen Sessions gebildet werden soll* - ich habe 
jetzt mal einfach angenommen, dass in der Session-ID der ursprüngliche 
Wert stehen soll und das Script entspr. geändert.

Das Script kannst Du auf 2 Wegen aufrufen:
als Shell-Script:
log.sh
sort session.log | tr -d '\r' | \
awk ' BEGIN { prev = ; }
  $1 != prev { prev = $1; visitor ++; }
  { printf %s \VisitorID=%d; SessionID=%s\\n,
   substr ($0, length($1) + 2), visitor, $1;}
' visitor=1 neues_log
/log.sh

oder als awk-Script:
log.awk
BEGIN { prev = ; }
  $1 != prev { prev = $1; visitor ++; }
  { printf %s \VisitorID=%d; SessionID=%s\\n,
   substr ($0, length($1) + 2), visitor, $1;}
/log.awk
dann aber mit folgender Syntax (eine Zeile):
sort session.log | tr -d '\r' | awk -v visitor=1 -f log.awk 
neues_log

Der tr mittendrin dient der Beseitigung des DOS-Zeilenendes (ich weiss 
nicht, ob die Originaldatei auch damit ankommt).

Jan


--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



awk script zum inkrementieren

2003-09-30 Diskussionsfäden Gebhard Dettmar
Liebe Leute,
keine Ahnung, ob das hier OT ist. Doch beim Googlen habe ich einige
Linux-Listen gefunden, die solche Fragen behandeln.
Folgendes: ich habe ein Logfile und eine Sammlung von Perl-Scripts
(WUMprep)
u.a. sessionizer.pl Dieses Script unterteilt die Hits des raw Files in
zusammenhaegende Aufrufe und setzt Session-Nummern vor die IP-Nr. des
Hosts
- $1 wird zu $2, $1 ist nun die Sess.-Nr. Sortiert ist das ganze
weiterhin
nach Timestamps. Das habe ich nach Session Nr. sortiert in sort.log
geschrieben und moechte jetzt ein awk-Script drueberlaufen lassen, das ans
Zeilenende Session- und VisitorID setzt und in dem Fall, dass $1 ungleich
$1 aus der vorausgehenden Zeile ist, Session- und VisitorID um 1
inkrementiert
(a la
'$1 != prev {print $0, $(NF+1)=SessionID=i++} for i=10001 o.s.„.), so
dass
jede Session eine je eigene Session-/VisitorID am Ende hat. Das brauche
ich
aus Formatgruenden (habe ECLF = ohne SessionID, detectRobots.pl benoetigt
leider Cookie-Format mit SessionID. Im Prinzip brauche ich das, was
sessionizer an den Anfang setzt, am Ende, aber eben genau in dem Format:
VisitorID=10001; SessionID=20001 usw.)
Leider kriege ich das nicht hin und beim googlen hab ich auch nichts
gefunden. Weiá jemand Rat?
Besten Dank im voraus
Gebhard


--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: awk script zum inkrementieren

2003-09-30 Diskussionsfäden Jan Trippler
Sorry Gebhard für die PM, ich hatte mich in der Mailadresse vertan.

Am Dienstag, 30. September 2003 16:09 schrieb Gebhard Dettmar:
[...]
 - $1 wird zu $2, $1 ist nun die Sess.-Nr. Sortiert ist das ganze
 weiterhin
 nach Timestamps. Das habe ich nach Session Nr. sortiert in sort.log
 geschrieben und moechte jetzt ein awk-Script drueberlaufen lassen,
 das ans Zeilenende Session- und VisitorID setzt und in dem Fall, dass
 $1 ungleich $1 aus der vorausgehenden Zeile ist, Session- und
 VisitorID um 1 inkrementiert
 (a la
 '$1 != prev {print $0, $(NF+1)=SessionID=i++} for i=10001 o.s..),
 so dass
 jede Session eine je eigene Session-/VisitorID am Ende hat. 
[...]

Ein paar Beispielzeilen wären sehr hilfreich gewesen. Ich denke mal, es 
sieht so aus:
Session-ID  IP irgendwas
0815  111.222.000.111 ...
und Du willst es so haben:
Session-ID  IP irgendwas Dein_neues_Ende
0815  111.222.000.111 ... VisitorID=10001; SessionID=20001

und das ganze so, dass ein (mir unbekannter Startwert) der Session- und 
Visitor-ID jedesmal inkrementiert wird, wenn sich Spalte 1 ändert. 
Korrekt?

Das geht mit awk z. B. so (ungetestet):

awk ' BEGIN { prev = -1; }
  $1 != prev { prev = $1; session ++; visitor ++; }
  { printf %s VisitorID=%d; SessionID=%d\n, $0,session,visitor;}
' session=20001 visitor=10001 sort.log neues_log

wobei die Werte 20001 und 10001 die Startwerte sind.

Jan


--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)