[ momir063 @ 01.05.2002. 19:20 ] @
pozdrav,
imam jedan file koji sadrzi jako mnogo teksta. Treba mi skripta koja ce da grep-uje taj file u potrazi za nekom reci (npr 'test') i onda da 10 redova iznad te reci i 10 redova ispod te reci prekopira u jedan poseban file. I tako za svaku pronadjenu rec 'test'. I ako moze da nakon jednog prekopiranog dela ubaci jos par praznih redova ili zvezdica kako bi mogao da raspoznajem delove teksta.

primer:
testsaudhakuwdhkauwhdkauwh
dawdawTESTdhakwhdauwdh
ajwkduahkwudha

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

dhakwudhkauwhdkauwhdkauwd
dkawhdkauhwkduTESTdkauwdhkauwhd
djawhdkauhwkaudhakwudahwkudah

(samo u ovom primeru je prekopiran jedan red pre i posle reci 'TEST' i nisam napisao izgled celog teksta mada nije ni bitno mislim da ste shvatili sta mi treba)

hvala unaperd

[ random @ 02.05.2002. 00:14 ] @
$ grep -B 10 -A 10 test velikifile > posebanfile

grep će ubaciti
--
između redova pri ispisu

P.S. Mogao si barem manual da pročitaš pre nego što si se zaleteo da pitaš. Ovako sam ja uzeo taj isti manual, prelistao ga površno (5 sekundi) i dao ti gotovo rešenje. To je malko sramota. Bar da je neki skript u pitanju, nego najobičnije korišćenje grep komande.
[ momir063 @ 02.05.2002. 17:06 ] @
e randome pre nego sto tako krenes da pises da sam se zaleteo a sve pise u manualu, ajde ti prvo isprobaj to sto si napisao pa tek onda pisi. procitao sam taj deo manuala ali NECE da razdvoji rezultate !!!!!!

a ne znam shell scripting i mislim da se moze uraditi shell skripta koja ce to sa lakocom da obradi.
[ random @ 03.05.2002. 15:51 ] @
Zaista misliš da nisam probao i da pričam napamet?

Code:

random@amber:~$ cat test.txt
01 tralala la la la la la la
02 trala lala la la
03 trala lala la
04 trala lala la la la
05 trala lala TEST la lala
06 tralala la la la la la la
07 trala lala la la
08 trala lala la la
09 tralala la la la la la la
10 trala lala la la la
11 trala TEST lala la
12 trala lala la la
13 trala lala la
14 trala lala la la la
15 trala lala la la
16 trala lala la
17 trala TEST lala la la la
18 trala lala la la la
random@amber:~$ grep -B 2 -C 2 TEST test.txt
03 trala lala la
04 trala lala la la la
05 trala lala TEST la lala
06 tralala la la la la la la
07 trala lala la la
--
09 tralala la la la la la la
10 trala lala la la la
11 trala TEST lala la
12 trala lala la la
13 trala lala la
--
15 trala lala la la
16 trala lala la
17 trala TEST lala la la la
18 trala lala la la la
random@amber:~$ grep --version
grep (GNU grep) 2.5

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

random@amber:~$


Stavio sam 2 umesto 10 radi kratkoće.

Ako se pak nađu dva reda jedan do drugog da sadrže traženi regularni izraz, grep neće dva puta ponavljati redove, već će prikazati 10 redova iznad prvog i 10 redova ispod poslednjeg. Možda te to buni.
[ momir063 @ 03.05.2002. 17:22 ] @
a tooo je problem ....
dobro je sto si napisao verziju grep-a jer ja imam stariji grep ... :(((
idem sada da stavim novi jer i ovom nece da odvaja kao tebi

hvala
[ leka @ 03.05.2002. 19:45 ] @
Vlado dobio si peticu kao korisnik od mene!
Druga stvar - momire, mozda tvoj problem nije samo verzija GREP-a. Nacin na koji koristis grep je takodje mozda problem, pogledaj kakav izlaz zapravo dobijas.

Ono sto ljudi ovde ne znaju je da momiru ovo ne treba za ovako glupu stvar, vec za obradjivanje jednog strima... Covek ce da startuje neku aplikaciju koja ce da "pljucka" par megabajta teksta dok bude radila, a grep treba da iz svega toga izvuce ono sto momiru treba...
[ Jovan Marjanovic @ 21.05.2002. 11:21 ] @
Mozda malo nevezano sa ovom temom, ali ako neko stvarno treba pomoc sa shell skriptama,
prva i osnovna stvar je da se kaze o kojem OS-u se radi, koja je verzija sed-a, awk-a i grep-a,
pa tek onda da se kaze o cemu se radi.
Meni licno se desavalo da napisem skriptu koja radi savrseno na HP-UX, AIX, IRIX, SINIX, i da je skopiram na Solaris, i da ne radi, zato sto awk na solarisu ima neki mali bug, i za to postoji patch,
a na linuxu nista ne radi zato sto gnu sed drugacije interpretira stvari od onoga koji stize na odredjenim platformama.