Я хочу добавить префикс пространства имен к тегам пространства имен по умолчанию документа XML из оболочки

Я добился указанного результата за 2 шага

На первом этапе я ищу шаблон и сохраняю его в файле Output.txt

На втором шаге 2 я использовал цикл for и распечатал содержимое согласно требованию

шаг 1

egrep -i "name|count|region" l.txt | awk -F ":" '{print $NF}' | sed "s/\^M//g" >> Ouput.txt

шаг 2

for ((i=1;i<=9;i=i+3)); do sed -n ''$i',+2p' Output.txt |sed "N;s/\n/ /g" |sed "N;s/\n/ /g"; done

выход

 some name  1  some_region
 some name  2  some_region
 some name  1  some_region
0
20.03.2020, 14:44
1 ответ

Использование xmlstarletособенно жестоким образом (Я жду правильного xpath)

for x in $(xmlstarlet sel -t -m "//*" -n -v "name()" file1.xml | sort | uniq); do 
    xmlstarlet ed -r "//svg:$x" -v "svg:$x" file1.xml > tmp.xml;
    mv tmp.xml file1.xml;
done

Поскольку вы уже объявили пространство имен svg, вам нужно вызвать его в xpath, чтобы изменить буквальное значение имен узлов.

0
28.04.2021, 23:20

Теги

Похожие вопросы