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
のみが必要な場合は、出力を次のようにパイプします。b
awk '{ 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
。