计算特定文本文件中的字符

时间:2017-08-17 06:57:46

标签: powershell scripting character counting

我需要计算特定文本文件中的人声,辅音和所有其他字符。

我创建了一个计算人声和辅音的脚本,但我无法弄清楚如何计算其余的字符。

目标是计算所有角色,即使它们来自其他语言,如冰岛角色和逗号,句号和感叹号等标志。

这是我目前的代码:

Clear-Host
$vocal = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "a|e|i|o|u|æ|ø|å" -AllMatches).Matches.Count
$vocal = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|z" -AllMatches).Matches.Count
$sign = $sign - $vocal - $consonant
if ($consonant -ge $vocal -ge $sign) {
  "`nThere are $vocal vocals, $consonant consonants and $sign other signs in the chosen document.`n"
} else {
    break
}

我意识到我需要一些方法来计算字符总数,然后减去人声和辅音(和空格)以找到第三个数字,但我无法弄明白。

3 个答案:

答案 0 :(得分:3)

您可以使用Measure-Object使用-Characters开关来获取文件中的总字符数。然后,以下内容将此属性的值返回给变量:

$TotalChars = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Measure-Object -Character).Characters

$sign = $TotalChars - $vocal -$consonant

如果您想对空白字符进行折扣,您还可以使用-ignorewhitespace切换Measure-Object

答案 1 :(得分:2)

假设您不想计算空格字符,可以使用模式\S来匹配单个非空白字符,以计算总字符数。您可能还希望使用字符类而不是替换,并避免多次读取输入文件。

$txt = Get-Content 'C:\path\to\input.txt'
$all       = ($txt | Select-String -Pattern '\S' -AllMatches).Matches.Count
$vocal     = ($txt | Select-String -Pattern '[aeiouæøå]' -AllMatches).Matches.Count
$consonant = ($txt | Select-String -Pattern '[bcdfghjklmnpqrstvwxz]' -AllMatches).Matches.Count

答案 2 :(得分:0)

Mark Wragg的答案非常有效。

我真正需要的只是“.characters”一词。

这是完成的代码:

clear-host
$vocal=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "a|e|i|o|u|æ|ø|å" -AllMatches).matches.count
$consonant=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|z" -AllMatches).matches.count
$TotalChars=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Measure-Object -ignorewhitespace -Character).Characters 
$sign = $TotalChars - $vocal -$consonant
if($consonant -ge $vocal -ge $sign){"`nThere are $vocal vocals, $consonant consonants and $sign other characters in the chosen document.`n"}
else{break}

注意:这项作业最初是用丹麦语制作的,因此是声乐类别中的“æøå”。如果其他人需要做类似的脚本,我很抱歉,如果我在脚本中留下了一些奇怪的单词或字母;)