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 |