|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Потребовалось заменить текст в файлах |
|
|
PowerShell - [решено] Потребовалось заменить текст в файлах
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Доброго дня.
Потребовалось заменить текст в файлах. Например в файле В34567.smt найти все 4567#В4#5676 и заменить их на 4567#БЫР4#5676. При этом помимо этого в тексте может содержаться фразы имеющие в себе эту букву "В" например "Всегда так делал" , нужно это учесть и не заменять букву в предложениях. Текст в файле на русском языке, замена происходит так же русских символов. Интересует реализация в Power Shell. Заранее премного благодарен за любую помощь. |
|
Отправлено: 08:47, 21-01-2013 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать (gc text.txt) -replace "\b4567#В4#5676\b","4567#БЫР4#5676"
|
Отправлено: 09:14, 21-01-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:35, 21-01-2013 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Касаемо структуры:
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*ТЗМ |
Отправлено: 09:59, 21-01-2013 | #4 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать А если вот так вот
$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 } } |
|
Отправлено: 17:55, 21-01-2013 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать (gc text.txt) -creplace "#Е","#НЕП"
|
Отправлено: 18:17, 21-01-2013 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Большое спасибо!
|
Последний раз редактировалось Anderwood, 24-01-2013 в 12:01. Отправлено: 15:26, 23-01-2013 | #7 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Подскажите по замене, есть строки в файле, вот одна из них:
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... Спасибо |
Отправлено: 11:17, 23-04-2013 | #8 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:24, 23-04-2013 | #9 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Kazun, Мерси...
|
Последний раз редактировалось rudimko, 23-04-2013 в 12:17. Отправлено: 11:28, 23-04-2013 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Найти txt файл по имени и заменить содержание файла на мой текст! | Fresenius | Скриптовые языки администрирования Windows | 5 | 21-11-2012 08:49 | |
CMD/BAT - Найти и заменить текст в файле. | Yurich75 | Скриптовые языки администрирования Windows | 2 | 07-01-2012 19:09 | |
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла | Nun-Nun | Скриптовые языки администрирования Windows | 1 | 08-03-2011 15:25 | |
FreeBSD - Найти текст во всем файлах | nibbl | Общий по FreeBSD | 1 | 23-08-2010 15:21 | |
[решено] Заменить текст в строке внутри символов <> | FlatX007 | AutoIt | 2 | 03-09-2009 22:14 |
|