我有一个文件($ 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中的文件中?
脚本的目的是确定文件中的分隔符
答案 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