1

В основном, что говорит название, позвольте мне привести пример.

this=X
that=XXX
those=XX

Я хочу случайным образом заменить X значением из списка, например, (1, 2 или 3), чтобы оно стало:

this=2
that=312
those=32

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

2 ответа2

0

Как писал DavidPostill, это невозможно через Notepad++.

Однако, если список замен и список файлов, в которых нужно заменить, является коротким, я бы использовал следующий ручной подход:

  • во-первых, замените XXX , потому что XXX не является частью X или XX (в обратном порядке, X является частью XXX , и если вы сначала замените X , например, на foo , то вы получите foo , foofoo , foofoofoo .)
  • затем заменить XX
  • в конце замените X

    test1 = X test2 = XX test3 = XXX

ctrl-a, ctrl-h

поиск: ххх заменить: foo

test1=X
test2=XX
test3=foo

ctrl-h

поиск: XX заменить: бар

test1=X
test2=bar
test3=foo

и так далее.

Встречный пример:

test1=X
test2=XX
test3=XXX

ctrl-a, ctrl-h

поиск: X заменить: foo

test1=foo
test2=foofoo
test3=foofoofoo

альтернативы

Cygwin

Первой альтернативой, которая приходит мне в голову, является Cygwin потому что она все равно установлена на моем компьютере.

Запустите Cygwin и используйте perl , sed или awk для замены.

Powershell

Как указано здесь, вы можете использовать некоторые сценарии PowerShell в соответствии с

(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt

партия

Как указано здесь, вы также можете использовать пакетные сценарии, например,

@echo off &setlocal
setlocal enabledelayedexpansion

set "search=%1"
set "replace=%2"
set "textfile=Input.txt"
set "newfile=Output.txt"
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i"
    set "line=!line:%search%=%replace%!"
    echo(!line!
))>"%newfile%"
del %textfile%
rename %newfile%  %textfile%
endlocal
0

Я хочу случайным образом заменить X значением из списка

Это невозможно при использовании встроенных функций Notepad++.

Вы можете написать скрипт для этого.

Есть плагин скрипта Python для Notepad++:

Python Script для Notepad++

  • Полный программный доступ к функциям и меню Notepad++
  • Полный программный доступ ко всем функциям Scintilla
  • Вызов других пунктов меню плагина
  • Назначение пунктов меню, ярлыков и значков панели инструментов для сценариев
  • Обрабатывать события Notepad++ и Scintilla непосредственно из скрипта Python
  • Встроенная консоль Python
  • Полная поддержка регулярных выражений для поиска и замены - скрипт заменяет регулярное выражение Python
  • Запустите внешние программы и перенаправьте вывод непосредственно в документ Notepad++, или отфильтруйте его, или просто в окно консоли.
  • Полная документация по всем объектам и методам

Исходный скрипт Python для Notepad++

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .