Как можно найти в файле кол-во разных слов и их частоту?
Например:
слово1 - 10 раз
слово2 - 30 раз
...............
словоN - 55 разПричем заранение неизвестно кол-во разных слов.
На чем лучше реализовать - ОС Linux
Заранее благодарю!
>Как можно найти в файле кол-во разных слов и их частоту?
>Например:
>слово1 - 10 раз
>слово2 - 30 раз
>...............
>словоN - 55 раз
>
>Причем заранение неизвестно кол-во разных слов.
>На чем лучше реализовать - ОС Linux
>Заранее благодарю!perl || (shell && (awk || sed))
>Как можно найти в файле кол-во разных слов и их частоту?
>Например:
>слово1 - 10 раз
>слово2 - 30 раз
>...............
>словоN - 55 раз
>
>Причем заранение неизвестно кол-во разных слов.
>На чем лучше реализовать - ОС Linux
>Заранее благодарю!Что такое gt и строки находить я могу. А как можно найти частоту всех разных слов?
>>Как можно найти в файле кол-во разных слов и их частоту?
>>Например:
>>слово1 - 10 раз
>>слово2 - 30 раз
>>...............
>>словоN - 55 раз
#!/usr/bin/perlwhile ($str = <STDIN>) {
while ($str=~/\b(\w+)\b/g){
$WORDS{lc($1)}++; # убрать lc(), если this и This - разные слова :)
}
}foreach (reverse sort {$WORDS{$a}<=>$WORDS{$b}} keys(%WORDS)){
print "'$_' repeats $WORDS{$_} times\n";
}вызывать -
#script.pl < infile > res
>foreach (reverse sort {$WORDS{$a}<=>$WORDS{$b}} keys(%WORDS)){вот тут заменить <=> на cmp
ибо оно только для чисел применимо и работать правильно не будетperl -e 'print join ",", sort {$a <=> $b} qw(sfdsf sfak sfi sfal)'
sfdsf,sfak,sfi,sfal
perl -e 'print join ",", sort {$a cmp $b} qw(sfdsf sfak sfi sfal)'sfak,sfal,sfdsf,sfi
>>foreach (reverse sort {$WORDS{$a}<=>$WORDS{$b}} keys(%WORDS)){
>
>вот тут заменить <=> на cmp
>ибо оно только для чисел применимо и работать правильно не будет
>"А-атставить макать капитана!" (c) Дружище, я именно числа и сравниваю здесь. слова - ключи хеша, значения - кол-во попаданий. Сортировка идет по частоте употребления.
>Как можно найти в файле кол-во разных слов и их частоту?
>Например:
>слово1 - 10 раз
>слово2 - 30 раз
>...............
>словоN - 55 раз
>
>Причем заранение неизвестно кол-во разных слов.
>На чем лучше реализовать - ОС LinuxIMHO: ЛУЧШЕ не на perl-e
fmt -w1 file |awk '{a[$1]++}END{for(i in a){print a[i]" "i}}' |sort -nr