The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
parseren van een string in een shell script asutoshch Programmeren en Shell Scripting 19 05-26-2008 10:18 PM
shell script parseren met sed jjamd64 UNIX voor Dummies Questions & Answers 5 12-11-2007 04:51 PM
Parseren van een regel in shell script unishiva Programmeren en Shell Scripting 3 11-01-2007 04:30 PM
Hulp bij het parseren van een CSV-bestand met Shell script mihirk Programmeren en Shell Scripting 10 06-24-2007 11:58
Parseren van een bestand in shell script sendhilmani123 Programmeren en Shell Scripting 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-08-2007
gurpreet470 gurpreet470 is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posten: 4
Shell script voor parseren 300mb logboekbestand ..

ben relatief nieuw voor Shell scripting.
Ik heb een script geschreven voor het ontleden van een groot bestand. De logica is:
Naast vele andere nutteloze levensmiddelen, zijn er vele gevallen van <abc> en bijbehorende </ abc> tags. (Ze zijn allemaal goed gesloten)
Mijn eis is om een bepaalde tag te vinden (zeg <data> 1234 </ data>) ingesloten ergens tussen <abc> </ abc> tags.
Indien gevonden, ik heb op te slaan 4e regel onder de <abc> tag in een tijdelijk bestand.

Een typisch log bestand ziet er als volgt uit:

************************
<pqr>
......
enkele gegevens
aantal andere gegevens
.........
</ PQR>
wat tekstgegevens
...........
<abc>
blah
blah
.....
<id> 12345 </ id>
blah ...
......
<data> 1234 </ data>
</ abc>
........
.....
.....

<abc>
blah
blah
.....
<id> 12345 </ id>
blah ...
...
</ abc>
..........
<rst>
...
...
</ rst>
wat tekst gegevens ...

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

Output van het script moet worden <id> 12345 </ id> opgeslagen in een tijdelijk bestand.

Het script Ik gebruik is:

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

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

terwijl lees Lijn1
doen


if [ "$ Lijn1" \u003d "<abc>"]; dan
OK \u003d 1
fi

if [ "$ OK"-eq 1]; dan
echo $ Lijn1>> temp_file
fi

if [ "$ Lijn1" \u003d "</ abc>"]; dan
OK \u003d 0
fi

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

if [-f temp_file]; dan

terwijl lees regel2

doen

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

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

fi

gedaan <temp_file

rm temp_file

fi

fi

gedaan <$ filename.log

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

De <abc> </ abc> tags komen in het laatste gedeelte in het algemeen (niet altijd), ergens rond 500.000 lijnen na ... en gewoonlijk, dossier heeft ongeveer 700.000 lijnen.

Het script draait, en blijft lopen, en ik vind 2 records die in de eerste lijnen opgeslagen in het tijdelijk bestand. Maar na enkele minuten 6-7, script eindigt abrupt, zeggende:
scriptname.sh test: argument verwacht.

Kan iemand me helpen op dit?
  #2 (permalink)  
Old 02-08-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.926
*GNU Awk * oplossing:


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

  #3 (permalink)  
Old 02-09-2007
gurpreet470 gurpreet470 is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posten: 4
Script werkt niet ..

Citaat:
Oorspronkelijk geplaatst door radoulov
*GNU Awk * oplossing:


Code:
awk '/data>1234/{print $5}' RS="<abc>" FS="\n" infile
Ik ben echt onder de indruk van de macht awk ..
Na het lezen van uw reactie, lees een aantal artikelen op awk.
Een of andere manier is het script nog steeds niet werken, en eindigt zeggen ..
**********************
awk: record `/ respons>
Vrij :...' 00:27 lang
record nummer 22
**********************
Ik heb hoge verwachtingen nu op u

Bedankt
  #4 (permalink)  
Old 02-09-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.926
Probeer om de records korter. U zei dat de <abc> </ abc> tags komen in het laatste deel na ongeveer 500.000 lijn zodat de eerste plaat is erg lang . Je kan het korter inclusief andere tags / strings (dat je op de beginig van het bestand) in de RS: bijvoorbeeld RS \u003d "<abc> | <other_tag>". Of, zo u wilt, kunt u mij een gecomprimeerde kopie van uw dossier particulier, dus ik kon geven proberen
BTW, wat is je Awk versie?
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 07:16.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0