![Windows 7 で、xml 内の特定の行番号を 2 番目の xml ファイルの特定のテキスト (行) に一括置換する](https://rvso.com/image/1338215/Windows%207%20%E3%81%A7%E3%80%81xml%20%E5%86%85%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E8%A1%8C%E7%95%AA%E5%8F%B7%E3%82%92%202%20%E7%95%AA%E7%9B%AE%E3%81%AE%20xml%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20(%E8%A1%8C)%20%E3%81%AB%E4%B8%80%E6%8B%AC%E7%BD%AE%E6%8F%9B%E3%81%99%E3%82%8B.png)
まず、私はプログラマーでも Unix の人間でもありません。Win7 で notepad++ v6.18 を使用しているので、私のために「わかりやすく」していただきたいと思います :)
Notepad++ ファイル内の各行の左側に、対応する行番号を示す「灰色」の数字があることに気付きました。そのため、「検索と置換」機能は、そのまま順方向に実行される (つまり、ファイル 1 の行 17 をファイル 2 の行 2 に置き換える) ものだと思っていましたが、それは素晴らしいことではないでしょうか!!! まあ、私は間違っていて、私がやろうとしていることを実現する方法が見つからないようです...
2 つの txt (または xml) ファイル f1 と f2 があり、ここで実行しようとしているのは、f1 内の特定の行を f2 内の特定の行に置き換えることです...
ここに例があります...
ファイル1(数百行)
(item)(title)ABC(/title)(link)a_bunch_of_code(/link)(/item)
(item)(title)XYZ(/title)(link)a_different_code(/link)(/item)
etc...
ファイル 2 (各行には異なるコードがあります)
hkskskdnnkk
absvdhvskkcncl
等...
私がやりたいことは、ファイル 1 の 1 行目をファイル 2 の 2 行目に置き換え、次にファイル 1 の 2 行目をファイル 2 の 1 行目に置き換える、というようにすることです。したがって、理想的には、ファイル 1 の 1 行目を見つけてファイル 2 の 2 行目に置き換え、次にファイル 1 の 2 行目を見つけてファイル 2 の 1 行目に置き換える、というコマンドまたはスクリプトを考えています。
おそらく、これは Notepad++ の外部でサードパーティのツールなどを使用して実行する必要があるかもしれません... アドバイスをお願いします。よろしくお願いします! -Paul
答え1
交換の範囲に応じて、次の 2 つのアプローチがあります。
Notepad++ のプラグイン マネージャーと比較プラグインをインストールすると、2 つのファイルの内容を比較するのに最適です。一部のテキスト (1 つ以上の単語) を他のテキストに置き換えたいだけの場合は、Notepad++ の検索と置換を使用して手動で行うことができます。これは、そのようなテキストの数が少ない場合や、置き換えるテキストが短い場合に適したソリューションです。
このような置換の数が多く、頻繁に置換する必要がある場合は、Unix diff や patch のようなものが必要です。Windows には、このようなツールが無料でたくさんあります。使い方は簡単です。diff ツールの出力はパッチ ファイルであり、これを (パッチ ツールを使用して) 2 番目のファイルに適用して、両方のファイルを同じにすることができます。ファイルをコピーする方が簡単ですが、ファイル全体を同一にするのではなく、一部の行だけを同一にしたい場合は、パッチ ファイル (プレーン テキスト ファイル) を編集して、不要な部分を削除します。