我需要从一个特定的文件中按字母顺序排序单词,并将它们放入26个名为A.txt、B.txt等直到Z.txt的文本文件中。
$Content = Get-Content ".\\1.txt"
$Content = ($Content.Split(" .,:;?!/()\[\]{}-\`\`\`"")|sort)
$linecount = 0
$filenumber = 0
$destPath = "C:\\test"
$destFileSize = 26
$Content |Group {$_.Substring(0,1).ToUpper()} |ForEach-Object {
$path = Join-Path $destPath $_.Name
$\_.Group |Set-Content $path
}
$Content | % {
Add-Content $destPath$filenumber.txt "$\_"
$linecount++
If ($linecount -eq $destFileSize) {
$filenumber++
$linecount = 0
}
}
1条答案
按热度按时间a8jjtwal1#
你可以这样做,但这也可能意味着,如果文件中没有以某个字母开头的单词,那么某些文件可能无法写入:
如果您总是想要正好26个文件(即使某些文件可能不包含任何内容),请使用此文件
Where-Object {$_.Name -cmatch '[A-Z]'}
子句使其忽略以A到Z以外的字符开头的单词