已整理-head 与 tail 的特殊用法(除尾行和去掉首行)

 

会点linux命令的人都知道 head -n k和tail -n k(k≥0)的作用,但却不知道还支持head -n -k和tail -n +k的用法, 更不知道有着怎样的作用了。

图解:

 

备注:方框表示文件全部内容,绿色部分表示命令产生的结果;

 

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

$ cat testfile 
1
2
3
4
5
6
7
8
9
10

 

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

$ head -n 3 testfile 
1
2
3

$ head -n +3 testfile 
1
2
3

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

但是,-k的意义是除了最后k行的所有行:

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

 

tail -n k和tail -n -k意义相同:

$ tail -n 3 testfile 
8
9
10

$ tail -n -3 testfile 
8
9
10

 

但tail -n +k的意义是从第k行开始,输出所有行;

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

  

 

【总结】
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行)

 

posted on 2022-08-26 17:08  tengq  阅读(797)  评论(0编辑  收藏  举报

导航