The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
parsning ett snöre i ett shell script asutoshch Shell-programmering och Skript 19 05-26-2008 10:18
shell script parsning med sed jjamd64 UNIX for Dummies Frågor & Svar 5 12-11-2007 04:51
Analysera en rad i Shell Script unishiva Shell-programmering och Skript 3 11-01-2007 04:30
Hjälp i parsning en CSV-fil med Shell script mihirk Shell-programmering och Skript 10 06-24-2007 11:58
Analysera en fil i Shell Script sendhilmani123 Shell-programmering och Skript 4 11-30-2006 02:29

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 02-08-2007
gurpreet470 gurpreet470 is offline
Registered User
  
 

Join Date: februari 2007
Inlägg: 4
Shell script för parsning 300MB loggfilen ..

är relativt nytt för Shell scripting.
Jag har skrivit ett manus för att analysera en stor fil. Logiken är:
Förutom många andra värdelösa tyger, det finns många förekomster av <abc> och motsvarande </ abc> taggar. (Alla är ordentligt stängd)
Mitt krav är att hitta en viss tagg (säger <DATA> 1234 </ data>) omges någonstans mellan <abc> </ abc> taggar.
Om den hittas jag måste lagra 4. Raden under <abc> tag i en temp-fil.

En typisk loggfilen ser ut:

************************
<pqr>
......
vissa uppgifter
andra uppgifter
.........
</ PQR>
vissa textdata
...........
<abc>
blah
blah
.....
<id> 12.345 </ id>
blah ...
......
<DATA> 1234 </ data>
</ abc>
........
.....
.....

<abc>
blah
blah
.....
<id> 12.345 </ id>
blah ...
...
</ abc>
..........
<rst>
...
...
</ RST>
lite text data ...

****************************

Produktionen av skriptet bör <id> 12.345 </ id> lagras i någon temp-fil.

Scriptet jag använder är:

********************

rm-f temp.log
filename \u003d $ 1
OK \u003d 0

samtidigt läsa Line1
göra


if [ "$ line1" \u003d "<abc>"]; sedan
OK \u003d 1
fi

if [ "$ OK"-eq 1]; sedan
echo $ line1>> temp_file
fi

if [ "$ line1" \u003d "</ abc>"]; sedan
OK \u003d 0
fi

if [ "$ OK"-eq 0]; sedan

if [-f temp_file]; sedan

samtidigt läsa line2

göra

if [ "$ line2" \u003d "<DATA> 1234 </ data>"]; sedan

katt temp_file | awk '(if (NR \u003d\u003d 4) (print ($ 0)))'>> temp.log

fi

done <temp_file

rm temp_file

fi

fi

done <$ filename.log

*******************************

Den <abc> </ abc> taggarna läggs i den sista delen i allmänhet (inte alltid), någonstans runt efter 500.000 rader ... och oftast har fil omkring 700000 rader.

Skriptet körs, och håller igång, och jag tycker 2 poster som är i det inledande rader lagras i temp-filen. Men efter cirka 6-7 minuter, skript avslutas plötsligt, sade
scriptname.sh test: argument väntat.

Kan någon hjälpa mig om detta?
  #2 (permalänk)  
Old 02-08-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.927
*GNU Awk * lösning:


Kod:
awk '/data>1234/{print $5}' RS="<abc>" FS="\n" infile

  #3 (permalänk)  
Old 02-09-2007
gurpreet470 gurpreet470 is offline
Registered User
  
 

Join Date: februari 2007
Inlägg: 4
Script not working ..

Citat:
Ursprungligen postat av radoulov
*GNU Awk * lösning:


Kod:
awk '/data>1234/{print $5}' RS="<abc>" FS="\n" infile
Jag är verkligen imponerad av awk makt ..
Efter att ha läst ditt svar, läsa några artiklar om awk.
På något sätt är skriptet fortfarande inte fungerar, och slutar säga ..
**********************
awk: record `/ svar>
Fre 00:27 :...' för lång
Rekordmånga 22
**********************
Jag har höga förväntningar på dig nu

Tack
  #4 (permalänk)  
Old 02-09-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.927
Försök att hålla de anteckningar kortare. Ni sa att <abc> </ abc> taggarna läggs i den sista delen runt efter 500.000 linje så den första skivan är riktigt långa . Du kan göra det kortare även andra taggar / strängar (som du har på beginig av filen) i RS: till exempel RS \u003d "<abc> | <other_tag>". Eller, om du vill kan du skicka mig en komprimerad kopia av filen privat, så jag kunde ge ett försök
BTW, vad är din Awk version?
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 02:45.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0