PDA

Visualizza la versione completa : Recuperare stringa tra due limitatori


Mutato
03-08-2004, 00:47
Ciao, all'interno di un file di testo avrei la necessita' di recuperare una stringa all'interno di due delimitatori.

Tipo:


Quello che mi serve


I delimitatori NON stanno sulla stessa riga di "quello che mi serve" e per ogni file ci sono piu' delimitatori (tutti diversi), io dovrei recuperare quello che sta tra e e metterlo in un altro file di testo.

:ciauz:

adarkar
03-08-2004, 19:03
prima soluzione che mi viene in mente:
cerchi la riga di
cerchi la riga di
e prendi quelle in mezzo :D

Sergio Pedone
03-08-2004, 19:53
sergio@winnie:~$ cat file

riga1


riga2


riga3


sergio@winnie:~$ grep -e "\[.*\]" file







sergio@winnie:~$ grep -v -e "\[.*\]" file
riga1
riga2
riga3

Ho evidenziato quello che potrebbe fare al caso tuo.

Ciao.

Mutato
03-08-2004, 19:56
Originariamente inviato da adarkar
prima soluzione che mi viene in mente:
cerchi la riga di
cerchi la riga di
e prendi quelle in mezzo :D

Come faccio a prendere quelle in mezzo???

Sergio Pedone
04-08-2004, 02:47
Sig. Mutato, cosa ne pensa della soluzione che ho proposto?
Saluti. :) :zizi: :madai!?:

Mutato
04-08-2004, 02:51
Ciao, il problema della tua soluzione e' che non mi permette di delitare la stringa.

Nel senso che io ho la necessita' di aveve solo le righe comprese tra ed ad esempio, anzi il contenuto di , tipo:

jdhjkhsjfhsjk
sflkslkflskf
slkjsfkjklsjf

sfksllkfkslkslfklklsk
sflslfslf


mentre quello che proponi restituisce tutte le righe tra [/*], escludendo per altro il contenuto che delle righe

jhdgjhgjhfgsjh
kjhkjhdfkjshf[/*]

:ciauz:

Sergio Pedone
04-08-2004, 02:55
Scusa, ma non ho capito cosa intendi; mi pare che il grep
che ti ho messo in grassetto escludeva i delimitatori e
restituiva solo le stringhe! Abbi pazienza, sono duro
a capire le cose, ma se posso darti una mano, ben venga!

ciao.

Mutato
04-08-2004, 02:58
Ho un file fatto tipo




kjhkjhkjfhks kjsh kjfh ksjh
fkjsh kjfh skjh fkjhs fkjh kj fhkjs
hfkjhs kjfh ksjhf kjs hfkj hskj fhkjhs hskfh ksjhf kjsh fkj hskjhfkjsh fkjhs fkjh skjfh kjsh fkjhs fkjhs kjfh s

QUESTO MI SERVE



klfjflkgjlkdjglkjdglkjdlkjglkdjlkdj




A me serve quello che c'e' tra e, ma non so se i delimitatori sono sulla stessa riga del testo, oppure no e tutto il resto non mi serve.

Se fosse un XML direi che devo recuperare un nodo <n></n>... e' piu' chiaro?

Sergio Pedone
04-08-2004, 03:07
Uhm, penso di aver capito.
Ma sti benedetti delimitatori, stanno sulla stessa riga
della stringa "QUELLO CHE MI SERVE" oppure sono su righe
diverse?

ciao.

adarkar
04-08-2004, 03:25
Originariamente inviato da Mutato
Come faccio a prendere quelle in mezzo???

io avevo pensato a qualcosa di bashese:
for (( i=$num_prima_riga ; $i < $num_ultima_riga ; $i++ ))
eccetera
per se in una riga oltre al delimitatore c' ache del testo "buono" cos non va pi bene.. :/
nn saprei :zizi:

Loading