分享

小白请教一个shell脚本,感谢!!!

前辈好:
        一个shell脚本看不明白,如下:
     tail  -n +$(tail -n1 /root/nnn) -F /root/data/web.log | awk 'ARGIND==1{i=$0;next}{i++;if($0~/^tail/){i=0};print $0;print i >> "/root/nnn";fflush("")}' /root/nnn -
请大神详细解释一下,越详细越好,因为我是小白呀~

已有(3)人评论

跳转到指定楼层
qcbb001 发表于 2018-1-28 13:19:11
tail  -n +$(tail -n1 /root/nnn) -F /root/data/web.log
线解释例子:

tail -n 1 -F /root/data/web.log
上面是显示/root/data/web.log的最后一行
而$(tail -n1 /root/nnn) 则是去最后一行。
/root/nnn应该是里面记录了行。
回复

使用道具 举报

qcbb001 发表于 2018-1-28 16:55:50
ARGIND==1 判断是否正在处理第一个文件
如果是则赋值i,然后循环。
if($0~/^tail/){i=0};print $0
这里是匹配以tail开头的行,如果没有匹配到则打印0,否则打印行。
fflush(""),则刷新所有文件和管道的输出缓冲区。

更多:
awk  next语句使用:在循环逐行匹配
运算符~(匹配)
^tail匹配tail开始的行
fflush函数用以刷新输出缓冲区,如果没有参数,就刷新标准输出的缓冲区,如果以空字符串为参数,如fflush(""),则刷新所有文件和管道的输出缓冲区。
$0表示数据的一行,$1表示文本第一个字段

回复

使用道具 举报

desehawk 发表于 2018-1-29 09:17:27
print i >> "/root/nnn“;
表示追加行i,到文件/root/nnn
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条