为什么 wc -l 告诉我这个非空文件有 0 行?

Cod*_*lue 6 text-processing newlines wc

xclip/xsel是允许您将剪贴板输出通过管道传输到 Ubuntu 上的 shell 的实用程序。不幸的是,它们似乎无法与wc命令结合使用。

尝试这个。打开一个新文件并输入:

this is a line
Run Code Online (Sandbox Code Playgroud)

不按行尾的回车键

现在,复制此文本并尝试以下操作:

$ xsel -o | wc -l
0
Run Code Online (Sandbox Code Playgroud)

输出是 0,而实际上它应该是 1。保存文件(调用它myfile.txt)。

现在尝试:

$ cat myfile.txt | wc -l
1
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,输出为 1。

为什么在第一种情况下输出为 0?

slm*_*slm 7

您遇到的问题是wc -l计算新行。由于您实际上还没有输入\n实际上有零个新行。

摘自wc手册页

打印每个 FILE 的换行符、字和字节计数,如果指定了多个 FILE,则打印总行。没有 FILE 或 FILE 为 - 时,读取标准输入。单词是由空格分隔的非零长度字符序列。

如果您切换它以wc计算字符数 ( -c),您会发现它实际上工作得很好并且可以计算字符数:

$ xsel -o | wc -c
14
Run Code Online (Sandbox Code Playgroud)

将其保存到文件中的作用是在文件末尾添加换行符。