Войти

Показать полную графическую версию : [решено] замена текста (несколько строк)


Alexander_88
18-10-2018, 05:30
Здравствуйте, имеется код:

@echo off

set "word_or_frase=Download"
set "replacement=Download1"

for %%i in (
"C:\Users\Alexander\OneDrive\work\new\old.txt"

) do (
echo WScript.Echo^(Replace^(WScript.CreateObject^("Scripting.FileSystemObject"^).OpenTextFile^(%%i^).ReadAll^(^),"%word_or_frase%","%replacement%"^)^)>.vbs
cscript //nologo .vbs| clip
mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(ClipboardData.GetData("text"))&Close()"| more>%%i
)
del .vbs

Он делает замену текста в txt файле с Download на Download1

Как сделать, чтобы слово Download изменилось на:
<prefix>$s</prefix>
Download
?
т.е. выше каждого встречного слова "Download" в txt документе, нужно добавить строку с содержимым <prefix>$s</prefix>

Busla
18-10-2018, 10:19
Какой лютый трэш и угар :o

Перейти с vbscript на jscript, и тогда использовать литералы перевода строки \r\n прямо в переменной замены.

alpap
18-10-2018, 15:55
sed-4.5.exe -i "s/Download/<prefix>$s<\/prefix>\nDownload/g" "file.txt"

Alexander_88
19-10-2018, 01:30
sed-4.5.exe -i "s/Download/<prefix>$s<\/prefix>\nDownload/g" "file.txt" »


"sed-4.5.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Iska
19-10-2018, 02:07
sed for Windows (http://gnuwin32.sourceforge.net/packages/sed.htm)

YuS_2
19-10-2018, 10:21
т.е. выше каждого встречного слова "Download" в txt документе, нужно добавить строку с содержимым »
Если буквально, т.е. без учета, что там уже может находиться такая строка и местоположение в строке слова "Download", не имеет значения:
powershell
(gc test.txt -enc utf8) -replace "(\bDownload\b)","<prefix>`$s</prefix>`n`$1"|sc test.txt -enc utf8

Alexander_88
19-10-2018, 19:16
спасибо :)




© OSzone.net 2001-2012