在linux中使用WC命令

时间:2015-07-23 10:13:22

标签: linux bash shell unix

以下是我文件中存储的内容

This is my Input

因此,使用wc -c命令我们可以获得存储在文件中的字符数。

我在 Ubuntu 中使用 VIM 编辑的上述文件的预期输出为16.但是,wc -c命令返回17。

为什么输出会这样?在行尾没有回车。那么,第17个角色是什么?

4 个答案:

答案 0 :(得分:7)

当然你已经进入了。也许你看不到它。考虑这两个例子:

 echo -n "This is my Input" | wc -c
 16

因为-n是为了避免输入而是

echo  "This is my Input" | wc -c
 17

看看这个例子也看到了新的一行。

enter image description here

如何查看换行符?

echo "This is my Input" | od -c

八进制和其他格式的转储文件
-c选择ASCII字符或反斜杠转义

以下是od的文件和用法示例 enter image description here

答案 1 :(得分:1)

在Linux中,当 VIM 保存缓冲区时,它将通过附加新行的行终止符来终止每一行。 VIM 编辑文件的十六进制转储。

您可以打开文件并输入:!xxd以查看 hex-dump 或直接使用hexdump yourfile命令。

0000000: 5468 6973 2069 7320 6d79 2049 6e70 7574  This is my Input
0000010: 0a                                       .
~                                                                                                                                 
~                                                                                                                                 
~    

在那里你可以看到,该文件在文件末尾添加了0a

因此,当您使用wc -c获取此文件的编号时,它将返回包含新行符号的 17

答案 2 :(得分:1)

你有17个因为'/ 0'字符。

答案 3 :(得分:0)

您输入的输入字符串没有输入/新行,但echo指定输入/换行符。并且wc -c从echo命令给出输入或换行符。

例如

echo k | wc -c 

返回2,因为1表示k,1表示echo附加的新行

,而

echo -n k | wc -c

返回1,因为-n会抑制换行符。

但是wc -c总是读取换行符。

你可以尝试

printf k | wc -c 

返回1

查看它在文件中的作用

bash-4.1$ echo 1234 > newfile
bash-4.1$ cat newfile
1234
bash-4.1$ cat -e newfile
1234$
bash-4.1$ printf 1234 > newfile
bash-4.1$ cat newfile
1234bash-4.1$ cat -e newfile
1234bash-4.1$