添加

添加

我的输入文件如下

输入文件

<ReconSummary>
<entryName>Total Deep</entryName>
<Code>777</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>


<ReconSummary>
<entryName>Total Saurav</entryName>
<Code>666</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>

我的代码看起来像

LineNum=`grep -n "Deep" deep.xml | cut -d: -f 1 | awk -F '[\t]' '{$NF = $NF -1;}1'`
sed -i "/$LineNum/s/^/<!--/" deep.xml

我需要的是:- 我想转到通过 LineNum 变量获取的行号,并且我想在 xml 标记之前添加 <!-- 。这样我的示例输出如下所示

<!--<ReconSummary>
<entryName>Total Deep</entryName>
<Code>777</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>


<ReconSummary>
<entryName>Total Saurav</entryName>
<Code>666</Code>
<License>L</License>
<Tran>H20</Tran>
<job>1234</job>
</ReconSummary>

我做不到。谁能告诉我我在代码中犯了什么错误?

答案1

您本质上采用了错误的方法来处理 XML 文件:使用 XML 解析工具。

然而,对于这个特定问题:反转文件的行;将所需的前缀添加到该行“深的”;并重新反转输出

tac file.xml | sed '/Deep/ {n; s/^/<!--/}' | tac

要将结果保存回原始文件,请执行以下操作之一:

sudo apt install moreutils

tac file.xml | ... | sponge file.xml

或者

tmp=$(mktemp)
tac file.xml | ... > "$tmp" && mv "$tmp" file.xml

当您尝试评论“深层”段落时,请使用

perl -00 -lpe '$_ = "<!-- $_ -->" if /Deep/' file.xml

相关内容