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
字节。