xclip
/xsel
是允许您执行以下操作的实用程序管道剪贴板输出到 Ubuntu 上的 shell。不幸的是,它们与命令的结合似乎失败了wc
。
尝试这个。打开一个新文件并输入:
this is a line
无需在行尾按回车键。
现在,复制此文本并尝试以下操作:
$ xsel -o | wc -l
0
输出是 0,而实际上它应该是 1。保存文件(称之为myfile.txt
)。
现在尝试:
$ cat myfile.txt | wc -l
1
正如预期的那样,输出为 1。
为什么第一种情况输出为0?
答案1
您遇到的问题是wc -l
计算新行。由于您实际上尚未输入,因此\n
实际上有零个新行。
摘自wc
手册页
打印每个 FILE 的换行符、字数和字节数,如果指定了多个 FILE,则打印总行数。没有 FILE 或 FILE 为 - 时,读取标准输入。单词是由空格分隔的非零长度字符序列。
如果你改变它以便wc
计算字符数 ( -c
),你会发现它实际上工作得很好并且可以计算字符数:
$ xsel -o | wc -c
14
将其保存到文件中会产生在文件末尾添加换行符的效果。
答案2
wc
计算行尾字符。第一次您只是标记文本,不包含任何行尾字符。保存文件时,编辑器会附加一个行尾字符,该字符按 计数wc
。