如何使用shell统计UTF-8编码文件中的汉字字符数

Arr*_*Cao 5 shell utf-8 wc

\n

cat doc.txt将显示以下字符:

\n
\n\n
\xe4\xbd\xa0\xe5\xa5\xbd Hello!\n\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe3\x80\x82This is a Chinese doc.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以使用命令

\n\n
\n

wc -w doc.txt

\n
\n\n

但它会显示:

\n\n
8 doc.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

该命令将字符\xe4\xbd\xa0\xe5\xa5\xbd\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87都作为一个单词,而实际上\xe4\xbd\xa0\xe5\xa5\xbd是两个中文单词,\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87 是四个中文单词。

\n\n

我想要的是正确计算这些中文单词(示例中有12个单词),有人可以帮忙吗?

\n

Ren*_*Ren 5

您可以使用-m--chars选择:

\n\n
$ echo -n "\xe4\xbd\xa0\xe5\xa5\xbd" | wc -m  \n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
2\n
Run Code Online (Sandbox Code Playgroud)\n