Ваша 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'
Перший прохід виділяє теги на окремі рядки, додаючи нові рядки до та після, потім другий прохід витягує те, що лежить між тегами, що відкриваються та закриваються.