特定の単語で最も頻繁に使用される文字を検索[重複]

特定の単語で最も頻繁に使用される文字を検索[重複]
Input = 'RaamKuumabbbb'
Output = b

bは文字列A = 'RaamKuumabbbb'に4回表示されます。

答え1

この試み

 Input='RaamKuumabbbb'
 output=(`echo $Input | grep -o . | sort | uniq -c | sort -nr | head -n1`)

 echo ${output[1]} appeared ${output[0]} times in the string $Input

答え2

パールの使用:

$ echo 'RaamKuumabbbb' | perl -pe 'map{$c{$_}++}split(//,$_);$_=[sort{$c{$b}<=>$c{$a}}keys(%c)]->[0]'
b

(出力の末尾に改行文字はありません)

Perl を使用して、与えられた文字列内の各文字の発生回数を計算し、結果のハッシュを発生降順でソートして最も一般的な文字を抽出します。

いくつかのソート後のPerlスクリプト:

# split string ($_) into individual characters
# count the number of occurrences of each in the hash %c
map { $c{$_}++ } split( //, $_ );

# sort the keys of %c (the characters) by 
# decreasing number of occurrences (the values)
# and pick out the first key
$_ = [ sort { $c{$b} <=> $c{$a} } keys(%c) ]->[0];

このオプションは、Perlがコードを実行した後に-p何でも出力するように促します。$_

各文字数を取得するには:

$ echo 'RaamKuumabbbb' | perl -pe 'chomp;map{$c{$_}++}split(//,$_);$_=join "\n",map{"$c{$_}:$_"}sort{$c{$b}<=>$c{$a}}keys(%c)'
4:b
3:a
2:m
2:u
1:R
1:K

答え3

単語がファイルにある場合は、text.txtと言ってから使用できます。

  sed 's/\(.\)/\1\n/g' text.txt | sort| uniq -c | sort -nr  |  head -n 1

各文字の間に新しい行を追加し、重複した項目を削除し、降順で並べ替え、最大発生回数の最初の項目を指定します。

または、次のものを使用できます。

echo "RaamKuumabbbb" | sed -E 's/(.)/\1\n/g' | sort |  uniq -c | sort -nr  |  head -n 1

上記の両方のコマンドは、次のように出力を使用します。出力4 bのみが必要な場合は、出力を次のようにパイプします。bawk '{ print $2 }'

echo "RaamKuumabbbb" | sed -E 's/(.)/\1\n/g' | sort|  uniq -c | sort -nr  |  head -n 1 | awk '{ print $2 }'

答え4

echo  RaamKuumabbbb  |
perl -lpe '
  $h{$_}++ for /./g;
  ($_) = reverse map { $h{$_} > $m and ($m,$i)=($h{$_},$_);$i } keys %h;
'

または、値の逆数ソートを使用して%h最も高い値を取得することもできます$_

perl -lpe '
  $h{$_}++ for /./g;
  ($_) = sort { $h{$b} <=> $h{$a} } keys %h;
'

布材:

  • まずハッシュ%hを埋めます。キーは正規表現で取得した入力文字列の各文字で、/./g値は入力文字列にその文字が表示される回数です。
  • 次に、文字列の個々の一意の文字であるハッシュキーを繰り返します。各反復では、カウントの最大値を見つけてその文字を記録しようとします。
  • 最後の文字は$_に保存され、暗黙的にに保存されますstdout

関連情報