次へ追加

次へ追加

私の入力ファイルは次のとおりです

入力ファイル

<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

おすすめ記事