Вы были на правильном пути:
sed -n 's/.*Undefined error code\(.*\)id.*/\1/p' bad_events_P2J3.xml
Обратите внимание, что cat
не требуется и, если вам не нужен дополнительный перевод строки, sed
предоставит вам его.
Я упустил тот факт, что это появляется несколько раз в вашем файле. Это должно работать в этом случае:
grep -Po 'Undefined error code.*?id' bad_events_P2J3.xml | sed 's/^Undefined error code//;s/id$//'