Powershell 计算每个文件的字符出现次数(仅第一行)

Powershell 计算每个文件的字符出现次数(仅第一行),powershell,Powershell,我有一个包含一堆csv文件的文件夹 我希望制作一个Powershell脚本,该脚本能够读取该文件夹中每个文件的第一行,并计算该行中某个特定字符的出现次数(在我的示例中为分号) 所需的输出文件为: File_1 : 6 --number of semicolons in the 1st line of the 1st file File_2 : 8 --number of semicolons in the 1st line of the 2nd file File_3 : 13 --numb

我有一个包含一堆csv文件的文件夹

我希望制作一个Powershell脚本,该脚本能够读取该文件夹中每个文件的第一行,并计算该行中某个特定字符的出现次数(在我的示例中为分号)

所需的输出文件为:

File_1 : 6 --number of semicolons in the 1st line of the 1st file
File_2 : 8  --number of semicolons in the 1st line of the 2nd file
File_3 : 13  --number of semicolons in the 1st line of the 3rd file
...

您可以将其分解为:

  • 发现所有文件
  • 对于每一项:
    • 读第一行
    • 计数分号
    • 输出文件名+计数

您可以将其分解为:

  • 发现所有文件
  • 对于每一项:
    • 读第一行
    • 计数分号
    • 输出文件名+计数

公认的答案似乎有点不必要的复杂,因此这里有一个Powershell one liner:

Get-Childitem -Filter *.csv | % {$_ | Add-Member -Name Count -MemberType NoteProperty -Value ([regex]::Matches((Get-Content $_.Name -TotalCount 1), ':').Count); $_} | Select Name, Count

公认的答案似乎有点不必要的复杂,因此这里有一个Powershell one liner:

Get-Childitem -Filter *.csv | % {$_ | Add-Member -Name Count -MemberType NoteProperty -Value ([regex]::Matches((Get-Content $_.Name -TotalCount 1), ':').Count); $_} | Select Name, Count

非常感谢。您只是忘记覆盖$firstLine的值,否则它将给出整行的长度。它对我来说是这样的:$firstLine=$firstLine-replace'[^;]'谢谢!您只是忘记覆盖$firstLine的值,否则它将给出整行的长度。它对我来说是这样工作的:$firstLine=$firstLine-replace'[^;]'它正在计算整个文件的发生率。我只需要将它计算在文件的第一行。很抱歉,没有计算到第一行-已更新我的答案。很好的努力,但您的一行不是真正的一行,因为其中包含分号。当然,这都在一行上,但是,你知道,分号在这个用例中是一个终止符如果你想炫耀你所做的,你就必须这么做$(([regex]::匹配((Get Content$\.Name-TotalCount 1),':').Count);$\),否则它将在ISE/VSCode中显示为错误。它正在计算整个文件的出现次数。我只需要将它计算在文件的第一行。很抱歉,没有计算到第一行-已更新我的答案。很好的努力,但您的一行不是真正的一行,因为其中包含分号。当然,这都在一行上,但是,你知道,分号在这个用例中是一个终止符如果你想炫耀你所做的,你就必须这么做$(([regex]::匹配((Get Content$\.Name-TotalCount 1),':')).Count);$\),否则它将在ISE/VSCode中显示为错误。