如何在文本文件中查找唯一词,然后使用 powershell 将唯一词存储在文本文件中
how to find unique word in text file and then store unique words in text file using powershell
我正在使用 PowerShell。这里我想从文本文件中删除重复的单词,然后将唯一的单词存储在文本文件中。我做的就在这里
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.tolower().split(" ")
}) | Sort-Object | Get-Unique
$A | export-csv "somefile.csv"
这是我的 file.
PowerShell 可以使用称为散列集的 dotnet 类型,它非常适合执行此操作,而且速度也比喻光速!
首先我们在 PowerShell 中将文件读入内存并将其分配给一个名为 $lines
.
的变量
接下来,我们拆分为唯一的 $words
。
最后,我们创建一个哈希集,它只允许唯一的单词或项目。
$lines = get-content "C:\Users\Stephen\OneDrive\Documents\quotes.txt"
[string[]]$words = $lines.Split()
$uniqueWords = [System.Collections.Generic.HashSet[string]]::new($words)
这里有一些关于其工作原理的信息,我们使用的是 the hashset constructor which accepts an input value。
但是速度很快!
使用哈希集也快得惊人!我在 10MB 的合理大小的文件上测量了性能,其中包含来自 samplefile.com 的文本以及一些名言和其他信息。
Method TotalMs
------ -------
Get-Unique 21484.4956
Using Hashset 1840.7407
获取哈希集的速度大大加快。在最坏的情况下它要快一个数量级,我以前见过它是两个数量级或更多。
或者简单的单行
(Get-Content 'C:\Test1\File1.txt' -Raw) -split '\W' | Sort-Object -Unique | Set-Content -Path 'C:\Test1\File2.txt'
\W
是非单词字符的正则表达式,如 space、逗号等
您的示例的主要问题是您没有处理拆分函数返回的数组:
Get-Content hello.txt | ForEach-Object { $wrds=$_.Split(" "); foreach ($i in $wrds) { Write-Output $i } } | Sort-Object | Get-Unique
将每一行拆分到数组 wrds 中,然后循环内容以写入输出,然后再执行排序和处理复制。
我正在使用 PowerShell。这里我想从文本文件中删除重复的单词,然后将唯一的单词存储在文本文件中。我做的就在这里
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.tolower().split(" ")
}) | Sort-Object | Get-Unique
$A | export-csv "somefile.csv"
这是我的 file.
PowerShell 可以使用称为散列集的 dotnet 类型,它非常适合执行此操作,而且速度也比喻光速!
首先我们在 PowerShell 中将文件读入内存并将其分配给一个名为 $lines
.
接下来,我们拆分为唯一的 $words
。
最后,我们创建一个哈希集,它只允许唯一的单词或项目。
$lines = get-content "C:\Users\Stephen\OneDrive\Documents\quotes.txt"
[string[]]$words = $lines.Split()
$uniqueWords = [System.Collections.Generic.HashSet[string]]::new($words)
这里有一些关于其工作原理的信息,我们使用的是 the hashset constructor which accepts an input value。
但是速度很快!
使用哈希集也快得惊人!我在 10MB 的合理大小的文件上测量了性能,其中包含来自 samplefile.com 的文本以及一些名言和其他信息。
Method TotalMs
------ -------
Get-Unique 21484.4956
Using Hashset 1840.7407
获取哈希集的速度大大加快。在最坏的情况下它要快一个数量级,我以前见过它是两个数量级或更多。
或者简单的单行
(Get-Content 'C:\Test1\File1.txt' -Raw) -split '\W' | Sort-Object -Unique | Set-Content -Path 'C:\Test1\File2.txt'
\W
是非单词字符的正则表达式,如 space、逗号等
您的示例的主要问题是您没有处理拆分函数返回的数组:
Get-Content hello.txt | ForEach-Object { $wrds=$_.Split(" "); foreach ($i in $wrds) { Write-Output $i } } | Sort-Object | Get-Unique
将每一行拆分到数组 wrds 中,然后循环内容以写入输出,然后再执行排序和处理复制。