2013-08-06 3 views
2

Я хочу заменить простую строку «НЕДЕЛЯ». (С точкой) в текстовый файл со строкой «TEST»Powershell заменить точную строку

$LOG= "C:\FILE.TXT" 
$A= "TEST" 
(Get-Content $LOG) | Foreach { $_ -Replace "WEEK.", $A } | Set-Content $LOG; 

Проблема в том, что мой файл имеет это содержание:

WEEK_A WEEK. 

И когда я бегу мой сценарий результат является:

TESTA TEST 

и результат, что я хочу это:

WEEK_A TEST 

Я пробую с^"НЕДЕЛЯ." и "^ НЕДЕЛЯ. $", но это не сработало

Можете ли вы мне помочь с регулярным выражением? Благодаря

====== EDIT ==================

Ok. Я стараюсь с

$LOG= "C:\FILE.TXT" 
$A= "TEST" 
(Get-Content $LOG) | Foreach { $_ -Replace "WEEK\.", $A } | Set-Content $LOG; 

и, кажется, его работы

+0

Кажется, вы ответили на свой вопрос – Richard

ответ

4

Причина, почему это произошло потому, что вы использовали шаблон WEEK. Точка была проблема: в регулярном выражении мира, точка означает «любой символ». Именно поэтому он заменил как WEEK_, так и WEEK..

Когда вы добавили обратную косую черту, точка была экранирована, т.е. он потерял свое особое значение. Таким образом, он работает.

Смежные вопросы