パターンと一致し、パターンが見つかったら、行番号に基づいてラベルにコメントを付けます。

パターンと一致し、パターンが見つかったら、行番号に基づいてラベルにコメントを付けます。

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

XMLファイルの入力

<Formula>
<Name>Total Hate Fee</Name>
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>


<Formula>
<Name>Total BO Fee</Name>
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>


<Formula>
<Name>Total BO Fee</Name>
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>

私のシェルスクリプトで「Total Hate Fee」パターンを検索し、そのパターンが見つかったら、追加された特定の行とパターンが一致<!--する-->部分だけに注釈を付け、出力が次のように見えるようにしたいと思います。

出力XMLファイル

<Formula>
<--<Name>Total Hate Fee</Name>-->
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>


<Formula>
<Name>Total BO Fee</Name>
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>


<Formula>
<Name>Total BO Fee</Name>
<Code>1234>
<Job>BO</Job>
<Type>sub</Type>
</Formula>

誰でもこの問題を解決するのに役立ちますか?ツールを使用したくありませんxmlstartet。代わりにシェルスクリプトを使用したい

ベストアンサー1

ほぼすべて来ました。私はedコードの2行目を追加しましたが、一致する行の下に4行があるようです。

printf '%s\n' \
    'g/Total Hate Fee/-1 s/^/<!--/' \
    'g/Total Hate Fee/+4 s/$/-->/' \
    'w newfile.xml' 'q' \
| ed -s file.xml;

おすすめ記事