无法在powershell中转义管道符(|)

时间:2015-12-11 20:05:31

标签: windows powershell escaping

我试图在文件的每一行中找到管道(|)字符的数量。我正在使用以下命令来执行此操作。

gc .\test.txt | % { ($_ | select-string "|" -all).matches | measure | select count }

它不计算管道符号。

我也试过

  1. `|
  2. '|'
  3. |
  4. 有谁能告诉我如何在电源外壳中逃避管道角色?

    如果我正在使用除管道之外的字符串或字符,则命令正常工作。

2 个答案:

答案 0 :(得分:5)

反斜杠\是正则表达式的转义字符。

gc .\test.txt | % { ($_ | select-string "\|" -all).matches | measure | select count }

如果您不确定,可以随时使用[RegEx]::Escape()

$pattern = [RegEx]::Escape("|")
gc .\test.txt | % { ($_ | select-string $pattern -all).matches | measure | select count }

否则管道不必在字符串内的PowerShell中进行转义。

答案 1 :(得分:5)

使用-SimpleMatch Select-String参数来关闭正则表达式匹配。