我有一个以制表符分隔的文件.我想要一个powershell脚本来计算每行中的选项卡数量.我想出了这个:
${C:\tabfile.txt} |% {$_} | Select-String \t | Measure-Object | fl count
Run Code Online (Sandbox Code Playgroud)
它产生3,这是文件中的行数.
我做错了什么指针?我希望它为文件中的每一行打印一个数字.
您的代码有两个问题,但它们都围绕分组/数组管理/嵌套循环.
gc test.txt | % { ($_ | select-string `t -all).matches | measure | select count }
Run Code Online (Sandbox Code Playgroud)
第一次尝试,不是很复杂:
gc .\tabfile.txt | % { ($_ -split "`t").Count - 1 }
Run Code Online (Sandbox Code Playgroud)
利用这里的事实,当我将字符串拆分为制表符时,我将得到一个数组,其中包含的项目多于该行中的制表符.
另一种方法,避免分裂线:
gc .\tabfile.txt | % { ([char[]] $_ -eq "`t").Count }
Run Code Online (Sandbox Code Playgroud)
字符串可以转换为char[]
(也有ToCharArray()
方法),然后我通过返回所有匹配的项而不是布尔值来使用比较运算符在集合上的工作方式不同的事实.因此比较会返回一个数组,其中包含原始行中的所有选项卡,我只需从中获取项目数.
归档时间: |
|
查看次数: |
5669 次 |
最近记录: |