Удалить объявление xml из данных xml, используя perl или awk
Наше приложение находится на приемной стороне для проведения ретро-анализа данных XML. Наше приложение не имеет Java или.NET, но работает в Unix, поэтому у него есть awk и Perl.
XML-сообщения в файле содержат:
<?xml version="1.0" encoding="ISO-8859-1" ?>
Я попробовал несколько вариантов в Perl и awk, чтобы удалить их, но не смог заставить их работать:
perl -p -i -e "s/<?xml version="1.0" encoding="ISO-8859-1" ?>//g" inputFile
perl -p -i -e "s/<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>//g" inputFile
perl -p -i -e "s/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g" inputFile
Любой другой вариант сделать это с помощью PERL или AWK?
2 ответа
Решение
Это сработало для меня без перезаписи файла данных:
perl -p -e 's/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g'
Я бы только перезаписал файл (-i
) когда я был уверен, что базовое регулярное выражение работает без ущерба.
Вам не нужно сопоставлять всю строку, если ваш файл XML. <?xml version
достаточно.
Пытаться:
sed -i '/<\?xml version/d' file
тестовое задание
kent$ echo '<?xml version="1.0" encoding="ISO-8859-1" ?>
foo
bar
xyz
hello
there'|sed '/<\?xml version/d'
foo
bar
xyz
hello
there