head将输出文件中的前n行,而tails将输出文件中的后n行。
假设您要输出文件的第4行,下面的命令就可以做到这一点,这对我来说很有意义,因为前4行通过管道连接到尾部,然后尾部将输出最后1行,因此第4行将是输出。
$>head -n 4 file.txt | tail -n 1
但是,下面的命令将产生相同的结果,但是我不明白为什么它会产生相同的结果。 +4部分有什么作用?
$>head -n 4 file.txt | tail -n +4
答案 0 :(得分:1)
来自man page:
-n,--lines = [+] NUM 输出最后NUM行,而不是最后10行;或使用-n + NUM从第NUM行开始输出
因此tail -n +4
在输入的第四行开始打印,在本例中为文件的前四行,因此仅打印第四行。
答案 1 :(得分:1)
tail
命令还带有+
选项,该选项在head命令中不存在。使用此选项tail命令打印时,数据从文件的指定行号开始而不是结尾。
对于命令tail +n file_name
,数据将从行号n
开始打印,直到文件结尾
假设我们有文件file.txt
Hello from localhost1
Hello from localhost2
Hello from localhost3
Hello from localhost4
Hello from localhost5
Hello from localhost6
如果您将+
选项与tail一起使用,则tail
将从指定的数字开始,如下所示:
head -n 4 file.txt | tail -n +1
Hello from localhost1
Hello from localhost2
Hello from localhost3
Hello from localhost4
从第二行开始:
head -n 4 file.txt | tail -n +2
Hello from localhost2
Hello from localhost3
Hello from localhost4
从第三行开始:
head -n 4 file.txt | tail -n +3
Hello from localhost3
Hello from localhost4
从第四行开始:
head -n 4 file.txt | tail -n +4
Hello from localhost4
这就是为什么它提供与head -n 4 file.txt | tail -n 1
相同的输出的原因
+
和-
在tail
中具有不同的含义。