![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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? |
|
||||
|
Script not working ..
Citat:
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 |