Можно awk использовать - он как раз для такого предназначен.
Читает файл построчно, точнее, последовательно по одной записи, и для каждой записи выполняет указанные действия.
Можно отлавливать в строке открывающие и закрывающие тэги, увеличивать или уменьшать значение переменной в зависимости от того, какой попался, и, если переменная больше 0, вырезать эти тэги из записи.
Что-то типа такого:
[untested]
BEGIN {st=0}
/<urlset/ { if(st>0) {
print gensub(/<urlset .*>/,"","g",$0);
st=st+1;
}
}
/<\urlset/{ if(st>0) {
print gensub(/<\urlset>/,"","g",$0);
st=st-1;
}
}
[/untested]