Ваша строка sed
преобразует <News:Image>
в </News:Image>
, что не то, что вам нужно.
Если предположить, что ни один из текстов не содержит <
то следующая простая и простая замена:
sed -n 's/[^<]*<News:Image>\([^<]*\)<\/News:Image>[^<]*/\1\n/gp' feed2.xml
Он находит любой текст до и после нужного тега, а затем заменяет найденную строку на то, что находится между открывающим и закрывающим тегами, с добавлением новой строки.
В более общем случае, например, когда в одной строке могут быть разные теги, это проще всего сделать с помощью двух вызовов sed
:
sed -e 's/<News:Image>/\n&/g' -e 's/<\/News:Image>/&\n/g' feed2.xml | \
sed -n 's/[^<]*<News:Image>\(.*\)<\/News:Image>/\1/gp'
Первый проход изолирует теги на отдельных строках, добавляя новые строки до и после, затем второй проход выделяет то, что находится между открывающим и закрывающим тегами.