无法在PowerShell中转义pipe道字符(|)

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

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

它不包括pipe道符号。

我也试过了

  1. `|
  2. '|'
  3. |

任何人都可以告诉我如何逃离电源shell的pipe道字符?

如果我使用string或字符以外的pipe道命令工作正常。

Solutions Collecting From Web of "无法在PowerShell中转义pipe道字符(|)"

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

 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中转义。

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