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: 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)