以下是我文件中存储的内容
This is my Input
因此,使用wc -c命令我们可以获得存储在文件中的字符数。
我在 Ubuntu 中使用 VIM 编辑的上述文件的预期输出为16.但是,wc -c命令返回17。
为什么输出会这样?在行尾没有回车。那么,第17个角色是什么?
答案 0 :(得分:7)
当然你已经进入了。也许你看不到它。考虑这两个例子:
echo -n "This is my Input" | wc -c
16
因为-n是为了避免输入而是
echo "This is my Input" | wc -c
17
看看这个例子也看到了新的一行。
echo "This is my Input" | od -c
八进制和其他格式的转储文件
-c选择ASCII字符或反斜杠转义
答案 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$