次のXMLデータセットがあります。追加したい区切り記号メインレコードが終了したとき。
<Record contentId="501" levelId="2" parentId="0">
<Record contentId="51873" levelId="361" parentId="0">
<Field id="27277" abc="e0f89f0c-6eed-4092-81b2-f8551df81998" type="4">
</Record>
<Field id="15584" abc="007ead3c-d1f9-47e2-aaac-c99553fc2a54" type="4">
</Record>
<Record contentId="5021427" parentId="0">
<Record contentId="5099659" parentId="0">
<Field id="27257" abc="b5eab609-5b3d-44b0-b64b-0eee0fe00951" type="6">5099659</Field>
</Record>
</Record>
に変えたい
<Record contentId="501" levelId="2" parentId="0">
<Record contentId="51873" levelId="361" parentId="0">
<Field id="27277" abc="e0f89f0c-6eed-4092-81b2-f8551df81998" type="4">
</Record>
<Field id="15584" abc="007ead3c-d1f9-47e2-aaac-c99553fc2a54" type="4">
</Record>@@@@
<Record contentId="5021427" parentId="0">
<Record contentId="5099659" parentId="0">
<Field id="27257" abc="b5eab609-5b3d-44b0-b64b-0eee0fe00951" type="6">5099659</Field>
</Record>
</Record>
sed コマンドを次のように使用します。
sed '/^<\/Record>$/{$!{ N; s/^<\/Record>\n <Record/<\/Record>@@@@\n <Record/;ty;P;D;:y}}'
答え1
貴重なコメントありがとうございます。以下のスクリプトを使用して問題を解決できました。
for j in `cat -n test.xml |grep '<Record '|awk '{print $1-1}'`; do for i in `cat -n test.xml |grep '</Record>' |awk '{print $1}'`; do if [ $i -eq $j ]; then sed -i ""$i"s/<\/Record>/<\/Record>@@@@/" test.xml; fi; done; done