Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Потребовалось заменить текст в файлах

Ответить
Настройки темы
PowerShell - [решено] Потребовалось заменить текст в файлах

Новый участник


Сообщения: 3
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Доброго дня.
Потребовалось заменить текст в файлах.
Например в файле В34567.smt найти все 4567#В4#5676 и заменить их на 4567#БЫР4#5676.
При этом помимо этого в тексте может содержаться фразы имеющие в себе эту букву "В" например "Всегда так делал" , нужно это учесть и не заменять букву в предложениях. Текст в файле на русском языке, замена происходит так же русских символов.
Интересует реализация в Power Shell.
Заранее премного благодарен за любую помощь.

Отправлено: 08:47, 21-01-2013

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


$m | Select -Unique
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:18, 23-04-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго дня.
Апну тему.
По вышеупомянутому образцу написал скрипт, но обновить действующий файл не получается - PS выдаёт, что файл "занят другим приложением".
При этом, если в скрипте название выходного файла другое, то он создаёт в этой же директории изменяемый файл.
В чём может быть ошибка?
Спасибо заранее.

Отправлено: 17:03, 04-08-2020 | #12


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


4524, это не ошибка - текстовые файлы не редактируются, а перезаписываются целиком либо только дописывают данные в конец. Либо через память, либо через временный файл.

Отправлено: 18:34, 04-08-2020 | #13


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата 4524:
В чём может быть ошибка? »
Только можно догадываться. Схема такая:
Код: Выделить весь код
(Get-Content file.txt) -replace 'регулярное_выражение','замена' | Set-Content file.txt

Отправлено: 18:43, 04-08-2020 | #14


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата 4524:
PS выдаёт, что файл "занят другим приложением" »
При перезаписи файла по конвееру посредством Set-Content такая ошибка может быть.
Сохраняйте файл через Out-File:
Код: Выделить весь код
(Get-Content file.txt) -replace 'регулярное_выражение','замена' | Out-File file.txt -Encoding utf8
Если с командлетом Set-Content, то так:
Код: Выделить весь код
$i = (Get-Content file.txt) -replace 'регулярное_выражение','замена'
Set-Content file.txt -Encoding utf8 -Value $i

Отправлено: 19:25, 04-08-2020 | #15


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата Uragan66:
При перезаписи файла по конвееру посредством Set-Content такая ошибка может быть. »
Ни разу не сталкивался. Приведите пример.

Отправлено: 20:24, 04-08-2020 | #16


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Приведите пример »
Foreigner, так пример то выше, у 4524...
У меня при редактировании или создании плейлистов часто такая ошибка была при использовании Set-Content по конвееру. Сейчас просто нету свежего примера.

Отправлено: 21:26, 04-08-2020 | #17


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата Uragan66:
так пример то выше, у 4524... »
У него нет никакого примера.

Цитата Uragan66:
У меня при редактировании или создании плейлистов часто такая ошибка была при использовании Set-Content по конвееру. »
Get-Content в скобках позволяет полностью считать файл и открыть его на запись. Поэтому ошибка может быть только в том случае, если он занят каким-либо третьим процессом, из-за нехватки прав или в силу аттрибутов.

Отправлено: 23:22, 04-08-2020 | #18


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Foreigner, там, выше, было и без скобок.

Отправлено: 08:42, 05-08-2020 | #19


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать



Цитата Iska:
Foreigner, там, выше, было и без скобок. »
Где, в 2013 году?

Отправлено: 08:45, 05-08-2020 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Потребовалось заменить текст в файлах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход