найти строку с большинством вхождений в .txt файле с powershell - PullRequest
1 голос
/ 02 декабря 2019

В настоящее время я работаю над школьным заданием в powershell, и мне нужно отобразить слово длиннее 6 символов с наибольшим количеством вхождений из текстового файла. Я попробовал этот код, но он возвращает количество вхождений для каждого слова, и это не то, что мне нужно сделать. Пожалуйста помоги.

$a= Get-Content -Path .\germinal_split.txt
foreach($object in $a) 
{
if($object.length -gt 6){
$object| group-object | sort-object -Property "Count" -Descending | ft -Property ("Name", "Count");
}
 }

Ответы [ 2 ]

1 голос
/ 02 декабря 2019

Из вопроса мы не знаем, что находится в текстовом файле. До сих пор подходы будут работать, только если в строке будет только 1 слово. Я думаю, что-то вроде ниже будет работать независимо от:

$Content = (Get-Content 'C:\temp\test12-01-19' -raw) -Split "\b"

$content | 
Where-Object{$_.Length -ge 6} |
Group-Object -Property Length -NoElement | Sort-Object count | Format-Table -AutoSize

Здесь я читаю в файле в виде одной строки, используя параметр -Raw. Затем я разделяю границы слов. Все еще используйте Где отфильтровать слова короче 6 символов. Теперь используйте Group-Object для свойства length, как видно из других примеров.

Я не часто использую словоограничение RegEx. Меня беспокоит то, что пунктуация может показаться странной, но мои тесты выглядят неплохо.

Дайте мне знать, что вы думаете.

0 голосов
/ 02 декабря 2019

Вы можете сделать что-то вроде следующего:

$a = Get-Content -Path .\germinal_split.txt
$a | Where Length -gt 6 | Group-Object -NoElement | Sort-Object Count -Descending

Объяснение:

Where определяет условие свойства Length. Group-Object -NoElement пропускает свойство Group, которое содержит фактические данные объекта. Sort-Object сортирует сгруппированные выходные данные по возрастанию по умолчанию. Здесь свойство Count указывается в качестве отсортированного свойства, а параметр -Descending меняет порядок сортировки по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...