头与尾的区别

头与尾的区别

head -c为什么和中的NUM含义有区别tail -c

我将使用以下命令来阐明我的意思:

$ echo "words" | tail -c +1
words
$ echo "words" | tail -c +2
ords
$ echo "words" | head -c -1
words$ echo "words" | head -c -2
word$

第一个命令不执行任何操作。
第二个命令删除第一个字母。
第三个命令删除换行符。
最后一个命令删除最后 2 个字符(包括换行符)。

那么为什么 head 删除了 2 个字节-c而 tail 只删除了一个字节呢?这看起来确实有些不一致,还是有什么深层含义?

答案1

引用man tail

使用 -c +NUM 输出从每个文件的字节 NUM 开始

引用man head

-c (…) [-]NUM
以 '-' 开头,打印每个文件除最后 NUM 字节之外的所有内容(…)

逻辑

tail -c +1

打印全部字节数1,即第一个字节,而

head -c -1

打印所有最后一个1字节。

相关内容