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