我正在尝试创建一个复杂的命令(使用 shell 替换和算术表达式),我想知道是否有人可以帮助我理解wc
命令的输出。
例如,这里有几个例子:
[11:10:33] labreu:~ $ wc -l test.txt
5 test.txt
[11:10:40] labreu:~ $ cat test.txt| wc -l
5
为什么命令返回不同的值?我试过查看它的手册页,但没有任何关于它的内容......
顺便说一句,我只是在问这个问题,因为我试图使用以下命令跳过文件的 x 行:
[11:25:35] labreu:~ $ tail -n "+$(( $(wc -l test.txt)-2 ))" test.txt
zsh: bad math expression: operator expected at `test.txt-2...'
在注意到wc
返回number_of_lines filename
并且使用管道(或重定向会产生不同的结果)之后,我设法通过使用以下方法获得了我需要的东西:
tail -n "+$(( $(wc -l<test.txt )-2 ))" test.txt
tail -n "+$(( $(cat test.txt | wc -l )-2 ))" test.txt
无论如何,主要问题仍然存在:为什么该wc
命令在管道中使用(或输入重定向)时返回不同的输出?
谢谢