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
.