Notepad ++, substitua "x" por um valor de uma lista

1

Basicamente, o que o título diz, deixe-me dar um exemplo.

this=X
that=XXX
those=XX

Eu quero substituir aleatoriamente o X por um valor de uma lista, por exemplo, (1, 2 ou 3), para que se torne:

this=2
that=312
those=32

Note que eu preferiria que não houvesse repetições nas strings, embora eu possa consertar isso mais tarde, se necessário.

    
por Anotherone 30.07.2016 / 19:06

2 respostas

0

Eu quero substituir aleatoriamente o X por um valor de uma lista

Isso não é possível usando a funcionalidade do Notepad ++.

Você pode escrever um script para fazer isso.

Existe um plug-in de script python para o Notepad ++:

Python Script for Notepad++

  • Full programmatic access to Notepad++ features and menus
  • Full programmatic access to all of Scintilla features
  • Call other plugin menu items
  • Assign menu items, shortcuts and toolbar icons to scripts
  • Process Notepad++ and Scintilla events, direct from a Python script
  • Python console built-in
  • Full regular expression support for search and replace - script Python regular expression replaces
  • Start external programs and pipe the output direct to a Notepad++ document, or filter it, or simply to the console window
  • Full documentation for all the objects and methods

Fonte Script Python para o Notepad ++

    
por 30.07.2016 / 19:22
0

Como DavidPostill escreveu, isso não é possível via Notepad ++.

No entanto, se a lista de substituições e a lista de arquivos para substituir forem breves, usaria a seguinte abordagem manual:

  • primeiro, substitua XXX , porque XXX não faz parte de X ou XX (invertido, X é uma parte de XXX e se você substituir X primeiro, por exemplo, com foo , você acabará com foo , foofoo , foofoofoo .)
  • , em seguida, substitua XX
  • no final, substitua X

    test1 = X test2 = XX test3 = XXX

ctrl-a, ctrl-h

pesquisa: XXX substituir: foo

test1=X
test2=XX
test3=foo

ctrl-h

pesquisa: XX substituir: bar

test1=X
test2=bar
test3=foo

e assim por diante.

Exemplo de contador:

test1=X
test2=XX
test3=XXX

ctrl-a, ctrl-h

pesquisa: X substituir: foo

test1=foo
test2=foofoo
test3=foofoofoo

Alternativas

Cygwin

a primeira alternativa que me vem à mente é Cygwin porque está instalada no meu PC mesmo assim.

Abra o Cygwin e use perl , sed ou awk para substituição.

Powershell

Conforme declarado aqui , você pode usar alguns scripts do PowerShell ao longo das linhas

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

Lote

Conforme declarado aqui , você também pode usar scripts em lote, e. g.

@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
    
por 31.07.2016 / 08:49

Tags