Notepad ++, sostituire "x" con un valore da un elenco


1

Fondamentalmente quello che dice il titolo, fammi fare un esempio.

this=X
that=XXX
those=XX

Voglio sostituire a caso X con un valore di una lista, ad esempio, (1, 2 o 3), in modo che diventi:

this=2
that=312
those=32

Nota che preferirei che non ci siano ripetizioni nelle stringhe, anche se posso ripararle più tardi, se necessario.

Risposte:


0

Voglio sostituire a caso X con un valore da una lista

Questo non è possibile usando la funzionalità di Notepad ++ incorporata.

Potresti scrivere una sceneggiatura per farlo.

C'è un plugin per script python per Notepad ++:

Script Python per Notepad ++

  • Accesso programmatico completo alle funzioni e ai menu di Notepad ++
  • Accesso programmatico completo a tutte le funzionalità di Scintilla
  • Chiama le altre voci del menu del plugin
  • Assegna agli script voci di menu, scorciatoie e icone della barra degli strumenti
  • Elabora eventi Notepad ++ e Scintilla, direttamente da uno script Python
  • Console di Python integrata
  • Supporto completo per le espressioni regolari per la ricerca e la sostituzione: sostituisce l'espressione regolare di Python
  • Avvia programmi esterni e inserisci l'output direttamente in un documento Notepad ++, oppure filtralo o semplicemente nella finestra della console
  • Documentazione completa per tutti gli oggetti e metodi

fonte Script Python per Notepad ++


0

Come ha scritto DavidPostill, questo non è possibile tramite Notepad ++.

Tuttavia, se l'elenco di sostituzioni e l'elenco di file in cui sostituire sono brevi, utilizzerei il seguente approccio manuale:

  • prima, sostituisci XXX, perché XXX non fa parte di X o XX (Invertita, X è una parte di XXXe se si sostituisce X prima, e. g. con foo, quindi finirai con foo, foofoo, foofoofoo.)
  • quindi sostituire XX
  • alla fine, sostituire X

    test1 = X test2 = XX test3 = XXX

ctrl-a, ctrl-h

ricerca: XXX sostituire: foo

test1=X
test2=XX
test3=foo

ctrl-h

ricerca: XX sostituire: bar

test1=X
test2=bar
test3=foo

e così via.

Counter esempio:

test1=X
test2=XX
test3=XXX

ctrl-a, ctrl-h

ricerca: X sostituire: foo

test1=foo
test2=foofoo
test3=foofoofoo

alternative

Cygwin

la prima alternativa che mi viene in mente è Cygwin perché è installato sul mio PC comunque.

Accendi Cygwin e usalo perl, sed o awk per la sostituzione.

PowerShell

Come dichiarato Qui , potresti usare alcuni script di PowerShell sulla falsariga di

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

partita

Come dichiarato Qui , puoi anche usare script batch, 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.