ファイル内のすべてのアイテムを各アイテムの一意の値に置き換える方法

ファイル内のすべてのアイテムを各アイテムの一意の値に置き換える方法

以下に示すように、MyIDが複数回表示されるXMLファイルがあります。

MyID="dett090900990000"

MyID=""すべての値を一意の値に置き換えたいです。

たとえば、xmlファイルに3つのエントリがある場合、MyID=""スクリプトの実行時にMyID値として使用されるパラメータを渡します(ただし、各エントリに増分値が割り当てられます)。

つまり、スクリプトを次のように実行するときmyscript.sh 7777777878889888

出力は次のようになります(つまり、MyIDのすべての値が変更され、一意の値を持つことを意味します)。何でも可能です(数値、文字列、混合)。

MyID="77777778788898881" MyID="77777778788898882" MyID="77777778788898883"

ご覧のとおり、指定された値に1、2、3が追加されます。

この問題を解決するための簡単なコマンドを探しています!ありがとうございます!

ベストアンサー1

Perlでは、次のことができます。

perl -pe 'BEGIN { $v=shift; }
          s/(MyID=")[^"]*(")/$1.$v.++$t.$2/ge' 7777777878889888 foo.xml bar.xml

おすすめ記事