textblock suche in log file

R

regatus

Grünschnabel
hallo.

wie kann ich in einem log file nach einem mehrzeiligem textblock suchen? der textblock muss exakt vorkommen.

in dem log file stehen hunderte messages und er soll eben 10-20 messages finden, die direkt nacheinander stehen.

das tool/script sollte in bash integrierbar sein.

habt ihr ne ahnung, wie ich sowas machen kann?

mfg
andreas
 
Hi,

mit Hilfe von Werkzeugen wie sed, awk und grep lassen sich in Zusammenhang mit entsprechenden regulären Ausdrücken sehr umfangreiche Suchmuster erstellen. Diese können u. v. a. auch das Steuerzeichen für eine neue Zeile unter UNIX beinhalten: \n.

Gruß Daniel
 
das habe ich schon probiert, aber das problem ist, dass grep nur zeile für zeile sucht und kein textblock der über mehrere zeilen geht.
 
Mahltid,


P3AC3MAK3R schrieb:
Die Kernaussage ist dort, daß man für die Lösung Deines Problems anscheinend eine Skriptsprache wie Perl einsetzen muß.

Öhem ...

1: er will ja grunsätzlich erst mal nur den Block finden, manipulieren will er ihn anscheinend nicht
2: PERL skripten (abgesehen davon, dass er es noch erst lernen müsste ...) um einen Zeichenkettenvergleich zu bewerkstelligen ??

Was empfiehlst Du ihm, wenn er mal mehrere Dateien auf einmal umbenennen möchte, C++ zu lernen ??

Fallout hats bereits gesagt:
Fallout schrieb:
... mit Hilfe von Werkzeugen wie sed, awk und grep lassen sich in Zusammenhang mit entsprechenden regulären Ausdrücken sehr umfangreiche Suchmuster erstellen ...

Nun, zum Geschäft:

Blockweises suchen via AWK:

Code:
awk /^erstes_Wort_Blockbeginn/,/^erstes_Wort_Blockende/ /pfad/zu/deiner/logdatei

... pipen geht natürlich auch ...

Code:
 ifconfig | awk /^en0/,/^en1/

...letzteres erzeugt solcherlei Ausgaben:

Code:
dx0r-DarwinOSX:~ dx0r$ ifconfig | awk /^en0/,/^en1/
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        tunnel inet  --> 
        inet6 fe80::217:f2ff:fe2e:13e8%en0 prefixlen 64 scopeid 0x4 
        inet 192.168.0.250 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:17:f2:2e:13:e8 
        media: autoselect (100baseTX <full-duplex>) status: active
        supported media: autoselect 10baseT/UTP <half-duplex> 10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,hw-loopback> 10baseT/UTP <full-duplex,flow-control> 100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX <full-duplex,hw-loopback> 100baseTX <full-duplex,flow-control> 1000baseT <full-duplex> 1000baseT <full-duplex,hw-loopback> 1000baseT <full-duplex,flow-control> none
        vlan: 0 parent interface: <none>
        bond interfaces: <none>
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

MfG


EDIT: pardon, Links jibbet natürlisch auch:

http://www.linuxsource.de/awk.html ---> dt., Anfänger geeignet
http://www.vectorsite.net/tsawk.html ---> en., Anfänger/Fortgeschr.
 
Zuletzt bearbeitet:
das habe ich schon probiert, aber das problem ist, dass grep nur zeile für zeile sucht und kein textblock der über mehrere zeilen geht.

Code:
server:~ # cat text
Hier steht ein Text,
welcher zum
Testen von sed und regulaeren
Ausdruecken
dienen soll.

server:~ # sed -n 'N; s/\(.*regulaeren\nAus.*\)/\1/p' text
Testen von grep und regulaeren
Ausdruecken

Gruß Daniel
 
Code:
sed -n '/^anfang_block/,/^ende_block/p' $FILE
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Mein Server versendet SPAM in Massen

Windows clients können nicht mehr auf lange laufendes System zugreifen

OpenVPN - Server kann clients nicht erreichen.

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben