情景linux--一张图搞懂head -n和tail -n

转载:https://blog.csdn.net/signjing/article/details/69357769

举例
创建一个文件,文件共10行,每行的内容依次为1-10数字,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat testfile
1
2
3
4
5
6
7
8
9
10

$ cat testfile | wc -l
10

当k=3时,分别执行上述命令:

1
2
3
4
5
6
7
8
9
$ head -n 3 testfile 
1
2
3

$ head -n +3 testfile
1
2
3

由此可见,head -n k和head -n +k意义相同;

1
2
3
4
5
6
7
8
$ head -n -3 testfile 
1
2
3
4
5
6
7

-k的意义是除了最后k行的所有行。

1
2
3
4
5
6
7
8
9
$ tail -n 3 testfile 
8
9
10

$ tail -n -3 testfile
8
9
10

由此可见,tail -n k和tail -n -k意义相同;

1
2
3
4
5
6
7
8
9
$ tail -n +3 testfile 
3
4
5
6
7
8
9
10

+k的意义是从第k行开始,输出所有行;
总结

  1. head -n k=head -n +k,tail -n k=tail -n -k,可以简单记忆为头正尾负

  2. 无论k前面的符号怎样,tail都是输出尾部内容,head都是输出头部内容的;

  3. 特别注意tail -n +k,这里的k表示从第K行开始;(因此上例中,head -n -3输出7行,而tail -n +3输出8行。)