PowerShell - [решено] Потребовалось заменить текст в файлах
-
Anderwood
PowerShell - [решено] Потребовалось заменить текст в файлах
Доброго дня.
Потребовалось заменить текст в файлах.
Например в файле В34567.smt найти все 4567#В4#5676 и заменить их на 4567#БЫР4#5676.
При этом помимо этого в тексте может содержаться фразы имеющие в себе эту букву "В" например "Всегда так делал" , нужно это учесть и не заменять букву в предложениях. Текст в файле на русском языке, замена происходит так же русских символов.
Интересует реализация в Power Shell.
Заранее премного благодарен за любую помощь.
Потребовалось заменить текст в файлах.
Например в файле В34567.smt найти все 4567#В4#5676 и заменить их на 4567#БЫР4#5676.
При этом помимо этого в тексте может содержаться фразы имеющие в себе эту букву "В" например "Всегда так делал" , нужно это учесть и не заменять букву в предложениях. Текст в файле на русском языке, замена происходит так же русских символов.
Интересует реализация в Power Shell.
Заранее премного благодарен за любую помощь.
-
Kazun
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
(gc text.txt) -replace "\b4567#В4#5676\b","4567#БЫР4#5676"
-
Kazun
-
Iska
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
Касаемо структуры:
20#1#Е09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее.
В тексте может быть много разных:
20#1#Е09-03-015-5#п#
44#5#Е45-34-458-4#и#
56#2#Е96-47-325-2#а#
нужно заменить в таком файле все Е, например на НЕП.
20#1#НЕП09-03-015-5#п#
44#5#НЕП45-34-458-4#и#
56#2#НЕП96-47-325-2#а#
и соответственно:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее, естественно чтобы не получилось такого:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДНЕПМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
20#1#Е09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее.
В тексте может быть много разных:
20#1#Е09-03-015-5#п#
44#5#Е45-34-458-4#и#
56#2#Е96-47-325-2#а#
нужно заменить в таком файле все Е, например на НЕП.
20#1#НЕП09-03-015-5#п#
44#5#НЕП45-34-458-4#и#
56#2#НЕП96-47-325-2#а#
и соответственно:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее, естественно чтобы не получилось такого:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДНЕПМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
-
Molchune
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
А структура файла можно поподробней?
Код:
Код:
Код: Выделить всё
Get-Content c:\test\В34567.smt | ForEach-Object {$_ -replace '4567#В4#5676','4567#БЫР4#5676.'} | Set-Content c:\test\В34567.smt-
Anderwood
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
Касаемо структуры:
20#1#Е09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее.
В тексте может быть много разных:
20#1#Е09-03-015-5#п#
44#5#Е45-34-458-4#и#
56#2#Е96-47-325-2#а#
нужно заменить в таком файле все Е, например на НЕП.
20#1#НЕП09-03-015-5#п#
44#5#НЕП45-34-458-4#и#
56#2#НЕП96-47-325-2#а#
и соответственно:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее, естественно чтобы не получилось такого:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДНЕПМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
20#1#Е09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее.
В тексте может быть много разных:
20#1#Е09-03-015-5#п#
44#5#Е45-34-458-4#и#
56#2#Е96-47-325-2#а#
нужно заменить в таком файле все Е, например на НЕП.
20#1#НЕП09-03-015-5#п#
44#5#НЕП45-34-458-4#и#
56#2#НЕП96-47-325-2#а#
и соответственно:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДЕМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
и так далее, естественно чтобы не получилось такого:
20#1#НЕП09-03-015-1#т#Монтаж прогонов =ДНЕПМОНТАЖ = Коз=0.0; Кэм=0.0; Кзм=0.0; Кмр=0#8648648#8646884#564.54#54665.45#####95.54#41.54#546.7#1546.48#5441.22#269.34#0#0#0##11.5451#1. 5445#2#10,7#0###1#0#0#
0#Коэффициент#Особые условия 2004 (СТР),Работы вне зданий#МДС 374.2004-567##:СТРПРЕТ;777*77;5.44*ЗМ;0.77*ЭМч;0.55*ТЗО;0.88*ТЗМ
-
Molchune
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
А если вот так вот
Код:
Код:
Код: Выделить всё
$replace = Get-Content c:\test\В34567.smt -Delimiter "#"
foreach ( $find in $replace) {
if ($find -match "^Е[0123456789]" ) {
$fraza = $find -replace 'Е','НЕП'
$newreplace = Get-Content c:\test\В34567.smt | ForEach-Object {$_ -replace $find , $fraza} | Set-Content c:\test\В34567.smt1 -Encoding utf8
}
}-
Kazun
-
Anderwood
-
rudimko
Re: PowerShell - [решено] Потребовалось заменить текст в файлах
Подскажите по замене, есть строки в файле, вот одна из них:
Apr 17 06:08:40 mail pop3d-ssl: LOGIN, user=username@domain.ru, ip=[::ffff:192.168.0.100], port=[56795]
Как произвести замену и оставить только "username@domain.ru"? Весь мозг сломал с -replace... Спасибо
Apr 17 06:08:40 mail pop3d-ssl: LOGIN, user=username@domain.ru, ip=[::ffff:192.168.0.100], port=[56795]
Как произвести замену и оставить только "username@domain.ru"? Весь мозг сломал с -replace... Спасибо