У меня есть большая часть файла, как показано ниже:
<DataGroup xsi:type="ReportDataGroup">
<SmartReportTemplate DescriptionContentType="text/plain"
IsActive="true">
<Name ns1:translate="yes">Agent Summary</Name>
<Defaults type="defaults">
<Title ns1:translate="yes">Agent Summary Report</Title>
<Description ns1:translate="yes"></Description>
Теперь мне нужно проверить шаблоны .*ns1:translate="yes">(.*)</.*
и когда мне нужно найти, мне нужно добавить строку из массива ниже этой строки.
Вместе со строкой из массива мне нужно добавить теги <Name
xml:lang="ja">
и </Name>
вокруг строки obt из массива, если в строке выше есть </Name>
и нужно добавить <Title теги <Title xml:lang="ja">
и </Title>
если строка с шаблоном имеет </Title>
Окончательный результат должен выглядеть следующим образом:
<DataGroup xsi:type="ReportDataGroup">
<SmartReportTemplate DescriptionContentType="text/plain"
IsActive="true">
<Name ns1:translate="yes">EM - perc</Name>
<Name xml:lang="ja">\u886815wEM - perce ~~~~~~~~~ ~~~~~~~~~ ~~\u5834</Name>
<Defaults type="defaults">
<Title ns1:translate="yes">AG - Rep</Title>
<Title xml:lang="ja">\u886815wAG - Rep ~~~~~~~~~ ~~~~~~~~~ ~~\u5834</Title>
<Description ns1:translate="yes"></Description>
где строки " \u886815wEM - perce ~~~~~~~~~ ~~~~~~~~~ ~~\u5834
" и т. д. ... находятся в массиве.
Есть идеи, как написать это? Я попытался с помощью sed внутри цикла while, который построчно читает файл, но это занимает очень много времени. Я попытался с awk, но я не могу получить доступ к массиву специальных символов внутри awk.