如何衡量|的数量在使用Powershell的文件中

时间:2016-09-13 11:34:04

标签: powershell

我有一个文件($ file),其中包含以下内容:

名字,姓氏,年龄,出生年月日,地址,移动

所以对于我的剧本,我说

$comma = get-content $file | select-string -pattern "," -allMatches

$comma.matches.count

并返回结果为5,它包含5个逗号

但是当我知道如何做到这一点:

$pipe = get-content $file | select-string -pattern "|" -allMatches

$pipe.matches.count

并返回结果为47

它没有任何管道,看起来它返回没有。字符

所以如何衡量不。的在PowerShell中的文件中?

脚本的目的是确定文件中的分隔符

2 个答案:

答案 0 :(得分:2)

regex中,模式|字面意思是“什么都不是” - 你的字符串是46个字符,所以至少有47个索引位置存在“无”。

您需要使用|转义\

Select-String '\|' -AllMatches

另一种解决方案是将每个字符串拆分为|并查看最终的字符数:

$pipeCount = @("FirstName,LastName,Age,Birthday,Address,mobile" -split '\|').Count - 1

答案 1 :(得分:0)

|是正则表达式中的特殊字符,需要进行转义。试试这个:

("S|d|f|h" | Select-String '\|' -AllMatches).Matches.Count

与您的示例混合,它将是:

$total = (cat $file | Select-String "\|" -AllMatches).Matches.Count