Использование подстановочного знака в 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"

Должен быть намного более простой способ, чем редактировать эти значения вручную, запись за записью.

2 ответа

Редактировать : см. ответ Барлопа, который гораздо лучше подходит для задачи изменения нескольких файлов одновременно. Я оставляю то, что ниже (хорошо для изменения одного файла за раз) для справки, пока.


В Notepad++ вы можете использовать часть Regex для функции поиска / замены. В этом случае я бы использовал регулярные выражения, такие как: (requiredPointsSpent)="(12|8)" и строка подстановки, такая как: $1="0", Важной частью является то, что вторая группа (обозначается (12|8)) Матчи 12 или же 8 между ", Вы можете использовать https://regex101.com/ чтобы поэкспериментировать с вашим конкретным регулярным выражением, или использовать http://www.regular-expressions.info/ для общего ознакомления.

введите описание здесь

Вы можете использовать Cygwin и Sed. Установите флажок для sed в качестве пакета для установки при установке cygwin, и в нем перечислены все пакеты.

Три файла, каждый из которых содержал слово привет, они были созданы с помощью линий эха.

Затем с помощью одной строки sed я выполнил поиск и замену всех файлов в каталоге.

Затем я отобразил содержимое файла "а" и, как вы видите, написано "книга", поэтому оно изменилось, как и файлы "b" и "с".

Так что все, что вам нужно сделать, это изменить

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

Для поиска и замены, например,

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

и делать

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

Итак, вы хотели бы эти две строки 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
$
Другие вопросы по тегам