linux中的“wc -c”和“wc -m”命令

SWI*_*WII 24 command-line wc

我有一个文本文件,它的内容是:

i k k
Run Code Online (Sandbox Code Playgroud)

当我wc -m用来计算这个文件上的字符数时,结果是7

问题 1:但是为什么我得到 7,假设它计算“行尾”字符,我不应该得到“ 6 ”吗?

问题 2:具体是如何wc -m工作的?

问题 3:当我使用wc -c(计算字节数)时,结果与 相同wc -m,那么有两个不同的选项有什么意义呢?他们做的完全一样,不是吗?如果不是,有什么区别以及如何wc -c运作?

Zan*_*nna 36

您确实应该在那里只有 6 个字符。尝试跑步

cat -A filename
Run Code Online (Sandbox Code Playgroud)

查看文件的非打印字符。你必须有一些额外的东西。如果我制作一个像你一样的文件,我明白了

i k k$
Run Code Online (Sandbox Code Playgroud)

你放空格了吗?这将使 7:i k k $或者它有一个换行符:

i k k$
$
Run Code Online (Sandbox Code Playgroud)

这也是 7

正如你所说

wc -m
Run Code Online (Sandbox Code Playgroud)

计数字符和

wc -c
Run Code Online (Sandbox Code Playgroud)

计数字节。如果您的所有字符都是 ASCII 字符集的一部分,那么每个字符将只有 1 个字节,因此您将从两个命令中获得相同的计数。

尝试使用非 ASCII 字符的文件:

$ echo ? > testfile
$ wc -m testfile
2 testfile
$ wc -c testfile
3 testfile
Run Code Online (Sandbox Code Playgroud)

啊哈!现在字节多于字符。

  • 我使用了“**cat -A**”命令,最后我发现在“**行尾**”字符(**$**)之前有一个空格。这就是为什么我得到 7 而不是 6。谢谢,“**cat -A**”帮助很大。 (3认同)
  • @SWIIWII 是的,我只是将其添加到我的答案中,因为我认为可能就是这样:) (2认同)