Přihlásit
: [1]
   |   
: bloky textu filtrovani dle klicove fraze  ( 3950 )
Ged
Full Member
***

Karma: 3
: 215


17002977
« : March 08, 2011, 14:29:00 »

Resim jak prohledavat obsah doc souboru (firemni "databaze" receptur).

Soubory maji pevnou strukturu. Tj.

Hlavicka ......

vlastni receptura
.
.
.
.
Paticka .......

Pomoci
:
#!/bin/bash
find -type f -iname '*.doc' | while read F
do
catdoc "$F" | sed -n '/Hlavicka/,/Paticka/p'
done

jsem schopny ze souboru vypreparovat bloky textu. Dale bych z techto bloku potreboval vypsat pouze ty co obsahuji klicovou frazi/hledany retezec.
Jde na to pouzit sed?

Potrebuji cele bloky textu a ne jen radek s hledanym retezcem.

Dekuji.
« : March 08, 2011, 14:30:38 Ged »

Jednou jsem ho videl na vanoce

Gold "3-Ethyl-1,2,2-trimethyl-bicyclo[2.1.0]pentane"

jabber: uranit@jabbim.cz
_dworkin


« #1 : March 25, 2011, 16:00:23 »

Reseni mas prece uvedeno v tvem vlaknu "duplicitni bloky textu" .
Ged
Full Member
***

Karma: 3
: 215


17002977
« #2 : March 27, 2011, 14:01:53 »

Reseni mas prece uvedeno v tvem vlaknu "duplicitni bloky textu" .

No domnivam se, ze tam resim trochu neco jineho a to vypsat unikatni bloky textu a ne zlikvydovat ty duplicitni.

V tomhle pripade resim situaci, kdy potrebuji vypsat bloky textu ohraniceneho nemenou hlavickou a patickou a ktere navic obsahuji urcite klicove slovo.

Jde nejak do konstrukce "sed -n '/Hlavicka/,/Paticka/p'" zabudovat jeste podminku libovolneho poctu radku mezi hlavickou a hledanym retezcem; libovolny pocet radku mezi "hledanym retezcem" a patickou? Nejaky regex, ale aby nebyl moc zravy (jen opravdu ty vyskyty mezi "Halvickou" a prvni nasledujici "Patickou").

Aka - bloky, ktere potrebuji vypsat:

Hlavicka
fsdfsf
dfsdf
.
.
"hledany retezec"
.
.
sdfsfsf
Paticka

Jednou jsem ho videl na vanoce

Gold "3-Ethyl-1,2,2-trimethyl-bicyclo[2.1.0]pentane"

jabber: uranit@jabbim.cz
_dworkin


« #3 : April 01, 2011, 09:17:47 »

Vypsat radky obsahujici klicove slovo dela myslim grep. Prevest bloky na radky je ten uz reseny OBECNY problem bez ohledu co si s tim chtel predtim delat a ted delat nechces.
_dworkin


« #4 : April 02, 2011, 17:22:29 »

Awk reseni: oddelovac radku se pred zahajenim zameni na Hlavicka a oddelovac sloupcu za Paticka. U takto vytvorenych "radku" vyhovujici podmince mezi // se provede cast mezi slozenyma zavorkama {}. Tzn vypise dodatecne znovu Hlavicka pak prvni polozka radku (tzn. vse mezi Hlavicka a Paticka) a pridame zase ztracenou Paticku.

cat | awk 'BEGIN { RS = "Hlavicka"; FS = "Paticka" } /hledany retezec/ { print "Hlavicka" $1 "Paticka" }'
: [1]
   |   
 
: