View Full Version : comando per estrarre testo
Michele81
12-07-2005, 17:53
Ciao!
stavo cercando un comando linux per estrarre testo da un html, indicandogli solamente l'inizio e la fine del pezzo da estrarre.
Esempio:
"<codice html da eliminare>pezzo da estrarre<codice html da eliminare>"
Ho provato con sed, ma non riesco ad ottenere risultati (e non so neanche se è adatto allo scopo)....
Michele81
13-07-2005, 11:38
Nessuno che mi riesce a dare una mano? ;)
bionicoz
13-07-2005, 13:25
man sed && RTFM && google.
magicmushrooms ~ # cat io
<html>questo</html> <html>questo</html>
<html>dovrebbe</html>
<html>andare</html>
<html>bene</html>
<html>no?</html>
magicmushrooms ~ # sed -e 's/<html>//g' -e 's/<\/html>//g' io
questo questo
dovrebbe
andare
bene
no?
magicmushrooms ~ #
-e per eseguire più di un comando alla volta, s sta per substitute, cosa? quello che c'è dopo lo /, con cosa? con quello che c'è dopo il secondo / (nulla nel nostro caso) g indica che deve sostituire tutte le occorrenze per riga, io è il file che devi processare. Spero di esserti stato utile, Bio.
in alternativa
sed -e 's/<codice html da eliminare>\(.*\)<codice html da eliminare>/\1/' file_html
se però l'html ha anche altri tag devi modificarlo per farglieli eliminare
man sed && RTFM && google.
ha detto che ha usato sed ma non è riuscito a venirne a capo, un forum serve per chiedere no? ;)
bionicoz
13-07-2005, 14:02
kingv, hai ragione, ma il fatto è che fino a 5 minuti fa nemmeno io avevo mai usato sed. In ogni caso scusa Michele81, evterò gli rtfm sul forum.. (ma li conserverò per irc... muhahah come sono bofh!!! :D)
Michele81
13-07-2005, 15:44
kingv, hai ragione, ma il fatto è che fino a 5 minuti fa nemmeno io avevo mai usato sed. In ogni caso scusa Michele81, evterò gli rtfm sul forum.. (ma li conserverò per irc... muhahah come sono bofh!!! :D)
La mia frase iniziale
"Ho provato con sed, ma non riesco ad ottenere risultati (e non so neanche se è adatto allo scopo)...."
lasciava intendere che un po' con sed ci ho smanettato.
Dell'esempio che hai riportato tu ne è pieno il web, e tratta una semplice sostituzione, una per ogni colonna...non ti è forse venuto il dubbio che ci abbia già provato? :stordita: ;)
Tranquillo per il rtfm ;)
@kingv: stasera provo il tuo
Ciao!
La mia frase iniziale
@kingv: stasera provo il tuo
la soluzione che ti ho postato prima non va bene, perchè si limita a sostituire a <tag>xxx<tag> la stringa contenuta tra i due delimitatori.
penso che quello che cerchi sia qualcosa del tipo:
sed -n -e 's/.*<tag_inizio>\(.*\)<tag_fine>.*/\1/p' nome_file
ripensandoci se i tag <tag_inizio> e <tag_file> sono su righe diverse non funziona nemmeno così :what: , provo a sistemartelo domani perchè sto uscendo.
Michele81
13-07-2005, 17:06
la soluzione che ti ho postato prima non va bene, perchè si limita a sostituire a <tag>xxx<tag> la stringa contenuta tra i due delimitatori.
penso che quello che cerchi sia qualcosa del tipo:
sed -n -e 's/.*<tag_inizio>\(.*\)<tag_fine>.*/\1/p' nome_file
Perfetto!!!! :D :D
Grazie mille! :mano:
Perfetto!!!! :D :D
Grazie mille! :mano:
bene ;)
tieni conto che se hai nel tuo file delle situazioni tipo:
<tag_inizio>xxx
<tag_fine>
(cioè su due righe diverse) non funziona :O
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.