【发布时间】:2019-06-10 21:52:39
【问题描述】:
所以我有这个任务,我必须读取一个文件。 然后计算文件中每个单词出现的次数。 之后,必须将每个单词写入一个附加文件,在该特定单词后面加上它出现的次数。
我已经有一些代码,但我尝试的一切都遇到了错误, 我是新手,我不明白很多错误消息。
Function AnalyseTo-Doc
{
param ([Parameter(Mandatory=$true)][string]$Pad )
New-Item C:\destination.txt -ItemType file
$destination = "C:\destination.txt"
$filecontents = get-content $Pad | Out-String
foreach($hit in $filecontents)
{
#$tempWoord = $hit | Convert-String
$lengte = $hit.Length
if($lengte -ge 4)
{
$hits = get-content $Pad | Out-String
if($hits -notcontains $hit)
{
Add-Content $destination $hit + $hit.LineNumber + '`n'
}
elseif($hits -contains $hit)
{
Add-Content $destination $hit + $hit.LineNumber + '`n'
}
}
}
}
所以如上所述,这要做的是:
- 它必须正确读取文件。
- 它必须知道单词是否超过 4 个字符。如果是,则必须计算在内
- 必须计算超过 4 个字符的每个单词。
- 最后,每个单词都必须写入一个附加文件,其中包含单词本身和后面的计数。
我的意思是:它在文本文件中出现了多少次
PS:我们正在使用.txt 文件进行测试
【问题讨论】:
-
您如何治疗宫缩?
What's被视为what is还是what's是您想要计算的单词?同样的问题也适用于连字符,即它们是两个词还是一个词? -
看起来
$hit + $hit.LineNumber + 'n'` 是您的错误的根源。 PoSh 错误通常包括行号和文本,所以你真的应该包括那些信息。 ///// 至于为什么会发生错误 - 您正在给 cmdlet six 项,其中两项是+标志。修复 = 将这些项目转换为单个项目 - 一个字符串。 -
假设“what's”将被视为“what is”。我不确定最简单的方法是什么,如果它更容易另一种方式也很好。
-
那么$hit应该转换成字符串?这不是正确的方法吗($tempWoord = $hit | Convert-String)?因为当我这样做时,它给了我一个“nullreferenceexception”错误。 @Lee_Dailey
-
@NDC - 不......整堆文本必须是一回事。构建一个包含该数据的字符串,然后将其用作调用中的值。
标签: powershell scripting