Войти

Показать полную графическую версию : Скрипт для удаления из файла слов


saurunaa
04-12-2022, 12:11
Здравствуйте, нужна помощь, нужен скрипт, который удалит из всех файлов *.json в директории слова+2 символа ":/" содержащие в текстовом файле, пример:

В файлах JSON есть строки

"uid" : "JB.Foren_MID2.1:/Path/dev/AUTO/AG2_M.txt",
"id" : "AnythingFVR.1:/DIR/stage/Plug.bin",

В файле txt содержится (каждое слово с новой строки):

JB.Foren_MID2.1
AnythingFVR.1


После выполнения скрипта строки в файлах JSON должны иметь вид:

"uid" : "Path/dev/AUTO/AG2_M.txt",
"id" : "DIR/stage/Plug.bin",

Foreigner
04-12-2022, 12:44
Правильней конечно разбор json-файла, как объекта, но по двум строчкам этого сделать невозможно.

PowerShell:

(Get-Content .\file.json) -replace '(?<=:\s").+:/(?=.+)' | Set-Content file.json

saurunaa
04-12-2022, 13:00
Правильней конечно разбор json-файла, как объекта, но по двум строчкам этого сделать невозможно.

PowerShell:
Код:Выделить весь код
(Get-Content .\file.json) -replace '(?<=:\s").+:/(?=.+)' | Set-Content file.json

А можно пояснить как этот скрипт работает? если я понимаю правильно он удаляет от пробела до чего-то там ?

дело в том что надо модифицировать не все строки, а удалять только значения, имеющиеся в list.txt

DJ Mogarych
04-12-2022, 21:19
$txt = (gc C:\temp\test.txt |% {$_+":/"}) -join '|'

dir C:\temp\*.json |% {
$tmpFile = (gc $_) -replace "$txt"
$tmpfile |Set-Content $_.fullname
}




© OSzone.net 2001-2012