2011-11-25 11 views
11

Jest piątek po południu, a mój mózg zamarzł!Pobierz tekst wewnątrz tagu XML za pomocą grep

grep -E -m 1 -o "<title>(.*)</title>" myfile.rss 

powraca

<title>Some title</title> 

Jak mogę po prostu Some title?

+1

atakujących nie posiada funkcji build-in do analizowania XML. Możesz rozważyć użycie PHP, perla do parsowania XML w odpowiedni sposób. Wtedy uzyskanie wartości węzła będzie łatwe – ajreal

+0

Nie, to kompletna przesada dla zadania! – tdc

+0

Rozumiem, że chcemy tylko wyodrębnić zawartość tytułu z xml znanego układu, a nie parsować xml. Do parsowania xml 'xmlstarlet' może być użytecznym narzędziem. –

Odpowiedz

21

rura jest dodatkowo poprzez, na przykład

sed -e 's,.*<title>\([^<]*\)</title>.*,\1,g' 
+0

Dzięki! Rozmrażanie mózgu ;-) – tdc

+0

+1, ale zauważ, że używanie "sed" do parsowania XML (lub HTML) nie jest dobrym pomysłem. Powinno to zostać wykonane tylko wtedy, gdy wejście jest dobrze znane i nie zmienia się nieoczekiwanie. Dla wszystkiego, co wyskoczyło automatycznie z Internetu, należy użyć odpowiedniego parsera. – Sorpigal

+0

@Sorpigal, zgadzam się całkowicie, zobacz komentarze do samego pytania w celu uzyskania szczegółów. –

Powiązane problemy