web-dev-qa-db-ja.com

Notepad ++のワイルドカードを使用して、非常に特定の範囲のエントリ/値を置き換える

まあ、XMLファイルを中心に、非常に具体的な値を変更するためにワイルドカードの使用方法を見つけようとしています。

ファイルの外観の例は次のとおりです。

<skill skill_name="alchemy_s18" requiredPointsSpent="12"  maxLevel="3" priority="37" guiPositionID="17" localisationName="skill_name_alchemy_s18"
/>

<skill skill_name="alchemy_s13" requiredPointsSpent="8" maxLevel="5" priority="37" guiPositionID="16" localisationName="skill_name_alchemy_s13"
/>
 _

今からこれらの特定の値を変更したいのです。

requiredPointsSpent="12"
requiredPointsSpent="8"
To this new value: requiredPointsSpent="0"
 _

それからそれらの値を手で編集するには、はるかに簡単な方法が必要です。

1
Zorkel

あなたはcygwinとsedを使うことができます。 CygwinをインストールするときにインストールするパッケージとしてSEDのボックスをチェックして、すべてのパッケージを一覧表示します。

3つのファイルは、それぞれが言葉を含んでいました、それらはエコー行で作成されました。

それから1行のSEDで、私は検索をしてディレクトリ内のすべてのファイルに置き換えました。

それから私はファイル 'a'の内容を表示し、あなたがそれが 'book'と言うように、ファイル 'b'と 'c'と同様に変更されたようにそれが変更されたように言いました。

だからあなたがするのは変化だけです

$ sed -i 's/hello/book/g' *
 _

あなたの検索に戻って交換してください。

$ sed -i 's/requiredPointsSpent="12"/requiredPointsSpent="0"/g' *
 _

そして、やります

$ sed -i 's/requiredPointsSpent="8"/requiredPointsSpent="0"/g' *
 _

それで、あなたはそれらの2つのsed -i線が欲しいのですが。

GUIの代替案のために、あなたはPowergrepまたは無料の代替案を見ることができました。

これらの方法では、この簡単な検索と交換には実際に使用されていないが、正規表現も可能にします。

$ mkdir asdf1

$ cd asdf1

~/asdf1
$ echo hello>a

~/asdf1
$ echo hello>b

~/asdf1
$ echo hello>c


~/asdf1
$ sed -i 's/hello/book/g' *

~/asdf1
$ ls
a  b  c

~/asdf1
$ cat a
book

~/asdf1
$
 _
1
barlop

編集:Barlopの答えを見てください。これは、一度に多くのファイルを変更する問題にはるかに優れています。参考のために、以下のものを残しています(一度に1つのファイルを変更するのに役立ちます)。


メモ帳++では、検索/置換機能の正規表現部分を使用できます。この場合、(requiredPointsSpent)="(12|8)"と置換文字列のような正規表現を使用します。$1="0"。重要な部分は、2番目のグループ((12|8))が12の間で8または"と一致することです。あなたは https://regex101.com/ を実験し、あなたの特定の正規表現を生きるか、使用するか、使用するか、使用するか、または使用することができます http://www.regular-expressions.info/ 一般的な参照。

enter image description here

1
Xupicor