Сбой строки выбора Powershell из-за escape-последовательности - PullRequest
1 голос
/ 20 декабря 2011

У меня есть файл со следующим содержанием

change sets:
  promotion level: INITIAL
  depends on: 
    GEESF_R2.1.0.9.5179@\My_PVOB (MES@\My_PVOB)
    My_2.1.0.13.4875@\My_PVOB (Notification@\My_PVOB)
    MyComponents_8_8_2011.6859@\My_PVOB (SQLReporting@\My_PVOB)
    My_2.1.0.13.7098@\My_PVOB (Support@\My_PVOB)

Я хотел прочитать содержимое с шаблоном @ \ My_PVOB)

Итак, я пишу опцию select-string как этот.

Select-string -pattern "@\My_PVOB)" -path "C:\Baselines.txt"

Но я получаю следующую проблему

parsing "@\My_PVOB)" - Unrecognized escape sequence \M.

Даже если изменить шаблон на

Select-string -pattern "@\\My_PVOB)" -path "c:\Baselines.txt"

Я получаю следующую ошибку

 "@\\My_PVOB)" - Too many )'s.

Есть идеи, как ее решить?

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Вы можете использовать метод Escape, чтобы заменить метасимволы их кодами выхода:

PS> $pattern = [regex]::Escape('@\My_PVOB)')
PS> $pattern
@\\My_PVOB\)

PS> Select-String -Path c:\Baselines.txt -Pattern $pattern 
2 голосов
/ 20 декабря 2011

Круглая скобка - это специальный символ, поэтому вы должны избегать его:

Select-string -pattern "@\\My_PVOB\)" -path "c:\Baselines.txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...