Блокнот ++, замініть "x" значенням зі списку


1

В основному те, що говорить назва, дозвольте зробити приклад.

this=X
that=XXX
those=XX

Я хочу випадково замінити X на значення зі списку, наприклад, (1, 2 або 3), щоб воно стало:

this=2
that=312
those=32

Зауважте, що я вважаю за краще, щоб у рядках не було повторів, хоча я можу це відремонтувати пізніше, якщо потрібно.

Відповіді:


0

Я хочу випадково замінити X значенням зі списку

Це неможливо за допомогою вбудованої функціональності Notepad ++.

Ви можете написати сценарій для цього.

Для Notepad ++ існує плагін python :

Сценарій Python для блокнота ++

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

Джерело Python Script для Notepad ++


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

пошук: XXX замінити: 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 і використовувати perl, sedабо awkдля заміни.

Powershell

Як зазначено тут , ви можете використовувати деякі сценарії PowerShell у відповідності до рядків

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

Партія

Як зазначено тут , ви також можете використовувати сценарії Batch, наприклад

@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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.