head与tail都是以行为单位进行数据选取的,head是取出前面,tail是取出后面的。

head(取出前面几行)

命令格式:

   head [参数]... [文件]...  

命令参数:

   -q 隐藏文件名

   -v 显示文件名

   -c<字节> 显示字节数

   -n<行数> 显示的行数

示例:

    默认情况下,显示前10行

[root@w zdw]# head 123.log 

1

2

3

4

5

6

7

8

9

10

    显示前5行

[root@w zdw]# head -n 5 123.log 

1

2

3

4

5

    文件有21行,以下操作,只打印前面的6行,后面的15行不会打印出来

[root@w zdw]# head -n -15 123.log   

1

2

3

4

5

6

    使用-c参数,看指定大小的内容

[root@c7 app]# ls -l                       #下面message的文件有1149字节(12k)

总用量 2392

-rw-r--r--. 1 root root     181 11月 22 17:34 99.sh

-rw-r--r--. 1 root root 1222783 10月 28 12:09 Glances-1.7.1.tar.gz

-rw-------. 1 root root   11595 11月 22 14:08 messages

-rw-r--r--. 1 root root    1149 11月 22 15:17 messages2.gz

-rw-r--r--. 1 root root    1202 11月 22 14:36 messages.gz

-rw-r--r--. 1 root root 1196607 10月 11 15:27 nginx-1.2.9.zip

[root@c7 app]# head -c 121 messages       #只查看121字节的内容

Nov 20 04:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 04:01:01 c7 systemd: Starting Session 94 of user root.

Nov[root@c7 app]# head -c 1k messages     #只查看1k的内容

Nov 20 04:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 04:01:01 c7 systemd: Starting Session 94 of user root.

Nov 20 04:01:01 c7 systemd: Started Session 94 of user root.

Nov 20 05:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 05:01:01 c7 systemd: Starting Session 95 of user root.

Nov 20 05:01:01 c7 systemd: Started Session 95 of user root.

Nov 20 06:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 06:01:01 c7 systemd: Starting Session 96 of user root.

Nov 20 06:01:01 c7 systemd: Started Session 96 of user root.

Nov 20 07:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 07:01:01 c7 systemd: Starting Session 97 of user root.

Nov 20 07:01:01 c7 systemd: Started Session 97 of user root.

Nov 20 08:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 08:01:01 c7 systemd: Starting Session 98 of user root.

Nov 20 08:01:01 c7 systemd: Started Session 98 of user root.

Nov 20 09:01:01 c7 systemd: Created slice user-0.slice.

Nov 20 09:01:01 c7 systemd: Starting Session 99 of user root

tail(取出后面几行)

命令格式:

tail[必要参数][选择参数][文件]   

命令参数:

   -f 循环读取

   -q 不显示处理信息

   -v 显示详细的处理信息

   -c<数目> 显示的字节数

   -n<行数> 显示行数

   --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 

   -q, --quiet, --silent 从不输出给出文件名的首部 

   -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 

  tail -f这个选项特别有用。tail -f命令在按要求的行数打印完之后,不是立即退出,而是等着有新行被追加到文件末尾,再随着新行的出现打印新行----对于监视日志文件来说很有用。不过要注意,写文件的那个程序可能会缓冲它的输出。即使从逻辑上讲,新行是按有规律的时间间隔追加的,但它们可能只按1kib或者4kib的块来显示。

  键入ctrl+c即可停止监视。

示例:

    显示文件最后5行

[root@w zdw]# tail -n 5 123.log 

16

17

18

19

20

    只列出15行以后的数据

[root@w zdw]# tail -n +15 123.log  

15

16

17

18

19

20

    使用-f参数,循环查看文件内容

[root@w zdw]# ping www.baidu.com >123.log &           #把ping信息追加到123.log中

[root@w zdw]# tail -f 123.log 

64 bytes from 220.181.111.188: icmp_seq=32 ttl=55 time=3.50 ms

64 bytes from 220.181.111.188: icmp_seq=33 ttl=55 time=3.67 ms

64 bytes from 220.181.111.188: icmp_seq=34 ttl=55 time=7.14 ms

64 bytes from 220.181.111.188: icmp_seq=47 ttl=55 time=3.54 ms

64 bytes from 220.181.111.188: icmp_seq=48 ttl=55 time=3.33 ms

64 bytes from 220.181.111.188: icmp_seq=49 ttl=55 time=4.24 ms

^C

一直显示,直到按ctrl+c才终止

    显示文件的第6行到第10行

[root@w zdw]# head -n 10 456.log|tail -n 5             #使用管道来操作

6

7

8

9

10

    使用-f查询新增的内容,并显示时间,%N精确时间

[root@rsync01 shell]# tail -f 6_5.sh | while read; do echo "$(date +%T.%N) $REPLY"; done    

16:26:33.322562150 ddd

16:26:33.325881031 ddd

16:26:33.330306537 ddd

16:26:33.333555193 ddd

16:27:07.573748236 123232

16:27:12.225703519 12324343

^C