Input = 'RaamKuumabbbb'
Output = b
b 在字符串 A='RaamKuumabbbb' 中出现了四次
答案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
使用 Perl:
$ 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 }'
ie:
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
。