[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mal wieder: awk und regExpes



On 2004.03.13 22:10, Gebhard Dettmar wrote:

Liebe Liste,
ich habe hier ein Webserver-Log, das ich mit dem Preprocessing Tool
WUMprep (http://sourceforge.net/projects/hypknowsys/), einer
perl-Sript-Suite zur Logfile-Analyse bearbeiten will. Sie enthält
mapReTaxonomies.pl, mit dem man nach vorher zu erstellenden regexes
die URLs in der request-Spalte des Logs in frei zu wählende
aussagekräftigere Bezeichnungen umwandeln kann. Das Ganze dient der
Erstellung von sog. Konzept Hierarchien (wen's interessiert: auf der
Seite des WUMprep-Autors Carsten Pohle gibt's massig Literatur dazu:
http://www.hhl.de/de/cxTP_contacts_1d.php?topic=study-ebusiness&id=50.
Das von mir zu behandelnde Log stammt von einem Portal zum Thema
Knowledge Management, bietet also hauptsächlich Artikel zu diversem
KM-Schnick Schnack an. Die feinste Konzept Hierarchie, in der jeder
Artikel nach seinem Inhalt benannt wird, bietet kaum Raum für regexes,
da strings wie /cp_artikel.htm?artikel_id=151 keinerlei Hinweise auf
Inhalt oder Kategorie enthalten: man kann eigentlich nur die
Metazeichen escapen. Nachdem ich das lästigste also zuerst gemacht
habe, will ich aus meiner in etwa so erstellten regexpr.txt

---------schnipp------------
VERANSTALTUNGSHINWEISE \/s_messen\.htm\?fall=-12
LINKS \/s_links\.htm\?fall=-13
LITERATUR \/s_literatur\.htm\?fall=-14
FOLIEN \/s_folien\.htm\?fall=-15
GLOSSAR \/s_glossar\.htm\?fall=-16
# ARTIKEL-TOOLs
WEB_SCW \/cp_artikel\.htm\?artikel_id=109
KOM_NET \/cp_artikel\.htm\?artikel_id=130
OPEN_EIS \/cp_artikel\.htm\?artikel_id=122
SKILL_INFORMATION_SYSTEM \/cp_artikel\.htm\?artikel_id=116
UML \/cp_artikel\.htm\?artikel_id=117
ONTOLOGYLEARNING \/cp_artikel\.htm\?artikel_id=96
SEMANTICWEB \/cp_artikel\.htm\?artikel_id=104
XPERTFINDER \/cp_artikel\.htm\?artikel_id=107
WISSENSPORTALE \/cp_artikel\.htm\?artikel_id=97
#Tools_Druckfassung
WEB_SCW_D \/cp_artikel_d\.htm\?artikel_id=109
KOM_NET_D \/cp_artikel_d\.htm\?artikel_id=130
OPEN_EIS_D \/cp_artikel_d\.htm\?artikel_id=122
SKILL_INFORMATION_SYSTEM_D \/cp_artikel_d\.htm\?artikel_id=116
UML_D \/cp_artikel_d\.htm\?artikel_id=117
ONTOLOGYLEARNING_D \/cp_artikel_d\.htm\?artikel_id=96
SEMANTICWEB_D \/cp_artikel_d\.htm\?artikel_id=104
XPERTFINDER_D \/cp_artikel_d\.htm\?artikel_id=107
----------schnapp---------------

eine grobe hierarchie erstellen: Einfach unterschieden nach Artikeln
und Navigation.
Für artikel schreibe ich also:
awk '/artikel[_d]/{print "ARTIKEL",$2}' regexpr.txt >regartikel
Alles andere soll unter NAVIGATION
Dazu muss ich IMHO schreiben
awk '/[^artikel[_d]]/{print "NAV",$2}' regexpr.txt >regnav
also von allem, was den string 'artikel' nicht enthält, soll $2 in
regnav.
Er gibt mir aber nur
------schnipp------
NAV \/cp_\.htm\?sortieren=&fall=1&pos=[1-9]*
NAV \/cp_\.htm\?sortieren=&fall=2&pos=[1-9]*
NAV \/cp_\.htm\?sortieren=&fall=3&pos=[1-9]*
NAV \/cp_\.htm\?sortieren=&fall=4&pos=[1-9]*
------schnapp-------
der Rest wird von [^artikel[_d]] nicht gematcht.
Bin ratlos und fürchte, ich komme von alleine nicht drauf. Weiß jemand
Rat?
Dein Pattern ist im zweiten Fall falsch. man awk sagt u.a.:

AWK patterns may be one of the following:
             /regular expression/
             ! pattern

awk '! artikel[_d] {print "NAV",$2}' regexpr.txt > regnav

bringt also das gewuenschte ERgebnis.

Schoenen Gruss,

Andreas



Reply to: