( kl223 | 2008. 06. 24., k – 12:06 )

Ez csak 1 sorra működik, nem?

Több sorra talán a legegyszerűbb a következő (a sed oneliners-ből):

# print section of file between two regular expressions (inclusive)
sed -n '/<p>/,/<\/p>/p' # case sensitive 

Viszont ez a fájlban előforduló legelső nyitó tag-től az előforduló utolsó záró tag-ig vágja ki a fájlból a sorokat.

Egy fokkal jobb megoldás (írjunk ciklust sedben...):

sed -n '
    /<p>/i!b
    :a
    /<\/p>/!{
        N
        ba
    }
    s/.*<p>//gi
    s/<\/p>.*//gi
    p
    q'

Ez eltávolítja a nyitó és záró taget is. Viszont csak a legelső nyitó tagtől a legelső záróig vágja ki a sorokat, tehát az esetleges egymásba ágyazott tageket nem kezeli okosan.

Kis kipofozással sztem javítható lenne. (nekem nem volt rá szükségem, mikor ezt írtam)

Üdv,
kl223