С perl
:
perl -Mopen=locale -lne '
$c{uc $_}++ for /\b\p{Alpha}/g;
END{for (sort {$c{$b} <=> $c{$a}} keys %c) {print "$c{$_} $_"}}'
Обратите внимание, что если некоторые буквы появляются в разложенном виде. Например, если É
вводится как É
(то есть E с последующим сочетанием ударений U+0301), а не как É
(U+00E9), то она будет считаться как E
, а не как É
или É
.
Если это вызывает беспокойство, то, вероятно, лучший подход - сначала разложить текст (поскольку некоторые графемы не имеют готовой формы) и работать на основе графемных кластеров. Есть такие, как fi
, которые вы, вероятно, захотите разложить в любом случае:
Сравните:
$ printf 'my fine name is \uc9ric, maybe E\u301ric, certainly not Eric\n' |
perl -Mopen=locale -lne '
$c{uc $_}++ for /\b\p{Alpha}/g;
END{for (sort {$c{$b} <=> $c{$a}} keys %c) {print "$c{$_} $_"}}'
2 E
2 N
2 M
1 C
1 FI
1 É
1 I
с:
$ printf 'my fine name is \uc9ric, maybe E\u301ric, certainly not Eric\n' |
perl -Mopen=locale -MUnicode::Normalize -lne '
$c{uc $_}++ for NFKD($_) =~ /\b(?=\p{Alpha})\X/g;
END{for (sort {$c{$b} <=> $c{$a}} keys %c) {print "$c{$_} $_"}}'
2 É
2 M
2 N
1 E
1 I
1 C
1 F
Одним из способов добиться этого является хитрость таких сайтов, как whatsmyip.com. все, что вам нужно, это веб-сервер в вашей сети, который отправляет IP-адрес, откуда он получает запрос, обратно клиенту.
Помните, поскольку вы используете NAT, сервер видит адрес NAT-маршрутизатора (в данном случае VM-host) в качестве исходящего адреса.
Для этого вы можете создать php-скрипт (т.е. whatsmyip.php
) в корневом каталоге вашего веб-сервера, например
//whatsmyip.php
<?php
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ;
Echo "$ip;
?>
, и получить к нему доступ с вашего гостя, например http ://webserver/whatsmyip.php
(источник: Thoughtco.com )
Теперь вам нужно только оценить этот ответ в вашем сервисе
Принимая во внимание ответ Гунтберта, это касается: