String Powershell:计算每一个“事件”的发生次数;1“;txt文件中的字符串
我们有一个学生及其笔记的文本文件,我们必须计算所有学生有多少个“1”笔记。 我的代码显示有多少行包含“1”注释,但当它找到“1”时,它会跳到下一行。 你能帮我吗 例如: 哈克贝利·费恩211 汤姆·索耶3 2 1 4 1 应该是5,但得到2String Powershell:计算每一个“事件”的发生次数;1“;txt文件中的字符串,string,windows,powershell,foreach,count,String,Windows,Powershell,Foreach,Count,我们有一个学生及其笔记的文本文件,我们必须计算所有学生有多少个“1”笔记。 我的代码显示有多少行包含“1”注释,但当它找到“1”时,它会跳到下一行。 你能帮我吗 例如: 哈克贝利·费恩211 汤姆·索耶3 2 1 4 1 应该是5,但得到2 $ones = 0 $file= Get-Content notes.txt foreach ($i in $file) { if ($i.Split(' ') -eq 1){ $ones ++ } } $ones
$ones = 0
$file= Get-Content notes.txt
foreach ($i in $file) {
if ($i.Split(' ') -eq 1){
$ones ++
}
}
$ones
如果输入文件中的所有
1
标记都是空格分隔的,如示例内容所示,请尝试:
# With your sample file content, $ones will receive the number 5.
$ones = (-split (Get-Content -Raw notes.txt) -eq '1').Count
上面使用了cmdlet的一元形式和-Raw
开关,该开关将文件作为一个多行字符串加载到内存中
也就是说,上面的命令将整个文件拆分为空格分隔的标记,统计所有行中等于'1'
的所有标记
如果您想计算每行'1'
令牌的数量,请使用以下方法:
# With your sample file content, $ones will receive the following *array*:
# 3, 2
$ones = Get-Content notes.txt | ForEach-Object { ((-split $_) -eq '1').Count }
至于你所尝试的:
if($i.Split(“”)-eq 1)
虽然
$i.Split(“”)
返回存储在$i
中的单个输入行中包含的所有(单个)空格分隔的令牌,但如果语句只导致一次调用关联的{…},则在的条件表达式中使用该表达式
阻塞,因此只增加$one
值1
,而不是手头行中1
标记的数量。如果输入文件中所有1
标记都是空格分隔的,如示例内容所示,请尝试:
# With your sample file content, $ones will receive the number 5.
$ones = (-split (Get-Content -Raw notes.txt) -eq '1').Count
上面使用了cmdlet的一元形式和-Raw
开关,该开关将文件作为一个多行字符串加载到内存中
也就是说,上面的命令将整个文件拆分为空格分隔的标记,统计所有行中等于'1'
的所有标记
如果您想计算每行'1'
令牌的数量,请使用以下方法:
# With your sample file content, $ones will receive the following *array*:
# 3, 2
$ones = Get-Content notes.txt | ForEach-Object { ((-split $_) -eq '1').Count }
至于你所尝试的:
if($i.Split(“”)-eq 1)
虽然$i.Split(“”)
返回存储在$i
中的单个输入行中包含的所有(单个)空格分隔的令牌,但如果语句只导致一次调用关联的{…},则在的条件表达式中使用该表达式
阻塞,因此只增加$one
值1
,而不是手头行中1
令牌的数量。已解决
谢谢你,mklement0
我不明白为什么,但它是这样工作的:
$ones = 0
$file= Get-Content notes.txt
foreach ($i in $file) {
$ones=(-split ($i) -eq '1').Count
}
}
$ones
解决了
谢谢你,mklement0
我不明白为什么,但它是这样工作的:
$ones = 0
$file= Get-Content notes.txt
foreach ($i in $file) {
$ones=(-split ($i) -eq '1').Count
}
}
$ones
我现在明白你想做什么了:计算每行1
令牌的数量。这在你的问题中并不清楚,我的解释是,你想计算整个文件中的1
s。答案的编写方式意味着$one
只包含循环后最后一行的计数,这可能不是目的。我已经更新了我的答案,展示了一种使用单个管道收集数组中所有每行计数的方法。我现在明白了您试图做的事情:计算每行的1
令牌数。这在你的问题中并不清楚,我的解释是,你想计算整个文件中的1
s。答案的编写方式意味着$one
只包含循环后最后一行的计数,这可能不是目的。我更新了我的答案,展示了一种使用单个管道收集阵列中所有每行计数的方法。