我正在尝试找到一个文件中每行的管道符(|)字符数量。我使用以下命令来实现:
gc .\test.txt | % { ($_ | select-string "|" -all).matches | measure | select count }
它不计算管道符号。
我也尝试了
- `|
- '|'
- |
有人能告诉我如何在PowerShell中转义管道字符吗?
如果我使用除管道外的字符串或字符,命令就可以正常工作。
我正在尝试找到一个文件中每行的管道符(|)字符数量。我使用以下命令来实现:
gc .\test.txt | % { ($_ | select-string "|" -all).matches | measure | select count }
它不计算管道符号。
我也尝试了
有人能告诉我如何在PowerShell中转义管道字符吗?
如果我使用除管道外的字符串或字符,命令就可以正常工作。
反斜杠\
是正则表达式的转义字符。
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中,管道符号在字符串内部不需要进行转义。
-SimpleMatch
参数进行 Select-String
命令,这将关闭正则表达式匹配。
gc .\test.txt | % {($_ | select-string -SimpleMatch "|" -all).matches | measure | select count}
- RajeevSimpleMatch
时,您不会在Matches
属性中得到任何内容(因为它不是正则表达式匹配)。在这种情况下,请使用 briantist 的答案。 - Joey