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