前后使用Linux命令

时间:2019-09-14 05:23:19

标签: linux shell unix sh

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

2 个答案:

答案 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中具有不同的含义。