The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
grep'ing egy fájlt csak egy bizonyos üzenet jelenik meg pallak7 Shell programozás és Scripting 3 04-23-2009 12:48 PM
grep'ing egyedi könyvtárak, és a kimeneti fájlok mozgatásához JayC89 Shell programozás és Scripting 1 12-06-2008 03:37 AM
Felgyorsítása a Shell Script (find, grep és a loop) Dave Stockdale A UNIX a dummies Kérdések és válaszok 8 08-11-2008 05:36 AM
Felgyorsításáról feldolgozása egy fájlt dlam Shell programozás és Scripting 4 07-19-2008 01:47 PM
felgyorsításáról összeállításához a Sun Solaris környezetre swamymns Shell programozás és Scripting 2 07-12-2006 01:06 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 04-21-2009
elinenbe elinenbe is offline
Regisztrált felhasználó
  
 

Join Date: Dec 2008
Hozzászólások: 8
Question grep'ing és sed'ing darabokat bash ... segítségre van szükségük felgyorsításáról egy log parser.

Nekem van egy fájl, amely 20-80 + MB méretű, ami egy bizonyos típusú naplófájl.

Ez naplók egyik folyamatok és ez a folyamat több szálon. Ezért a naplófájl egyfajta rendetlenség. Íme egy példa:

A naplófájl néz ki: "DATE TIME - Thread ID - részletek", és egy új fájl jön létre minden egyes nap
Idézet:
20090409 000122 - BD0 - Rendelési 123 induló ülés
20090409 000122 - BD0 - Feldolgozás 1
20090409 000122 - BD0 - További feldolgozás
20090409 000123 - EF0 - Rendelési 234 induló ülés
20090409 000124 - EF0 - Feldolgozás
20090409 000124 - BD0 - Feldolgozás 2
20090409 000125 - BD0 - További feldolgozás
20090409 000125 - EF0 - Feldolgozás
20090409 000125 - DD1 - Mégsem 345 induló ülés
20090409 000125 - DD1 - Feldolgozás
20090409 000126 - DD1 - Feldolgozás 2
20090409 000126 - BD0 - Rendelési 123 leállítása
20090409 000127 - 11F - Query 543 induló ülés
20090409 000127 - 11F - Feldolgozás
..
..
20090409 000135 - 11F - Query 543 leállítása
..
20090409 000140 - EF0 - Rendelési 234 leállítása
..
..
..
20090409 000143 - DD1 - Mégsem 345 leállítása
Most, itt van, ha kap, hogy a fájdalom ... Meg kell kihúzni a sorok "Starting Session", hogy "Ending Session" minden szál azonosítót, és a dump ezeket külön fájlokba. Mindazonáltal, a szál ID CAN lehet sokszorosítani folyamán a nap -, de általában nem több órán át.

A munkamenet tarthat-tól 30 másodperc és 4 perc múlva (~ 1200 sor) a naplófájl, és ott lehet akár 20 egyidejű üléseket.

Most van valami, ami működik - bár elég lassan. Én végül grepping és sedding a fájlt újra és újra. Ha a fájl nagyobb lesz, akkor vesz egy tetemes időt. Remélem, hogy itt valaki, aki tud nekem segíteni jobbá tenni ezt. Ha lehetséges, szeretném használni bash.

Köszönöm,
Eric

Itt a kód van, ami működik, de _slow_


Kód:
    if [[ -e "$log_file" ]]
    then
        echo "parsing: "$log_file
        grep "starting session" $log_file | while read line 
        do
            thread=`echo $line | cut -d' ' -f4`
            sessiontype=`echo $line | cut -d' ' -f6`
            sessionnumber=`echo $line | cut -d' ' -f7`

            echo "  first line of session: "${line:0:25}"..."
            line2=`echo  - $thread - $sessiontype $sessionnumber shutting down`
            echo "  last line of session: "${line2:0:25}"..."
            sed -n "/$line/,/$line2/p" $log_file | grep " - $thread - ">session.$thread.$sessiontype.$sessionnumber
        done
    ....

Ez ad nekem néhány kép, amit használ a fenti példa napló hoznának létre az alábbiak szerint:
Idézet:
file: session.BD0.Order.123
20090409 000122 - BD0 - Rendelési 123 induló ülés
20090409 000122 - BD0 - Feldolgozás 1
20090409 000122 - BD0 - További feldolgozás
20090409 000124 - BD0 - Feldolgozás 2
20090409 000125 - BD0 - További feldolgozás
20090409 000126 - BD0 - Rendelési 123 leállítása

file: session.DD1.Cancel.345
20090409 000125 - DD1 - Mégsem 345 induló ülés
20090409 000125 - DD1 - Feldolgozás
20090409 000126 - DD1 - Feldolgozás 2
..
..
..
20090409 000143 - DD1 - Mégsem 345 leállítása

file: session.11F.Query.543
20090409 000127 - 11F - Query 543 induló ülés
20090409 000127 - 11F - Feldolgozás
..
..
20090409 000135 - 11F - Query 543 leállítása

file: session.EF0.Order.234
20090409 000123 - EF0 - Rendelési 234 induló ülés
20090409 000124 - EF0 - Feldolgozás
20090409 000125 - EF0 - Feldolgozás
20090409 000140 - EF0 - Rendelési 234 leállítása
  #2 (permalink)  
Old 04-21-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderátor
  
 

Join Date: Feb 2007
Hozzászólások: 4.348
Feltételezve, hogy az első sorban a munkamenet végződik "kiindulási session" próbálja meg ezt (nem tesztelt):


Kód:
awk '{
  !a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
  a[$4]{print > n[$4]}
' file

Használja nawk / vagy usr/xpg4/bin/awk Solaris Ha hibát.

Üdvözlettel
  #3 (permalink)  
Old 04-21-2009
elinenbe elinenbe is offline
Regisztrált felhasználó
  
 

Join Date: Dec 2008
Hozzászólások: 8
Elnézést, de kellett volna pontosabb. A kezdő sorok minden ülésszak végén valami hasonló:

20090409 000122 - BD0 - Megrendelés kezdődő ülésén a 123 kliens 12 port 34
20090409 000123 - EF0 - Megrendelés kezdődő ülésén a 234 kliens 347 port 38
...

És mind a kliens és a kikötői dinamikus értékek.

Igen, kapok hibák - Én ezt a futás alatt cygwin, így nem könnyű hozzáférést nawk.
  #4 (permalink)  
Old 04-21-2009
devtakh devtakh is offline
Regisztrált felhasználó
  
 

Join Date: Oct 2007
Helyszín: Bangalore
Posts: 514
Próbáld ki ezt --
$ Sort-k 4 logfile | awk 'NR \u003d\u003d 1 (prev \u003d $ 4; txt \u003d "session." $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); getliine) (if (prev! ~ $ 4) (txt \u003d "session." $ 4 "." $ 6 "." $ 7; printf ( "% s \ n% s", txt, $ 0); prev \u003d $ 4) else (print $ 0; prev \u003d $ 4)) '

ad valami ilyesmi --

session.11F.Processing.
20090409 000127 - 11F - Processing20090409 000.127 - 11F - Feldolgozás
20090409 000127 - 11F - Query 543 induló ülés
session.BD0.More.Processing
20090409 000122 - BD0 - Több Processing20090409 000.125 - BD0 - További feldolgozás
20090409 000126 - BD0 - Rendelési 123 leállítása
20090409 000122 - BD0 - Rendelési 123 induló ülés
20090409 000122 - BD0 - Feldolgozás 1
20090409 000124 - BD0 - Feldolgozás 2
session.DD1.Cancel.345
20090409 000125 - DD1 - Mégsem 345 induló session20090409 000.125 - DD1 - Feldolgozás
20090409 000126 - DD1 - Feldolgozás 2
session.EF0.Order.234
20090409 000123 - EF0 - Rendelési 234 induló session20090409 000.124 - EF0 - Feldolgozás
20090409 000125 - EF0 - Feldolgozás


egészségére,
Devaraj Takhellambam
  #5 (permalink)  
Old 04-21-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderátor
  
 

Join Date: Feb 2007
Hozzászólások: 4.348
Try this one:


Kód:
awk '
{if !($4 in a){a[$4]=$4; n[$4]="session."$4"."$6"."$7}}
{if ($4 in a) {print > n[$4]}}
' file

Üdvözlettel
Closed Thread

Könyvjelzõk

Címkék
bash, grep, sed

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 05:16 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0