日志过滤时,总是要打印时间段,所以获取时间字段所在行号及列标,当日你可以去其他字段。
语法格式:
awk '/过滤字段/{for(i=1;i<=NF;i++)if($i~/过滤字段/)print $i" 所在列:"i" 所在行:"NR}'
使用awk是可以快速定位字段行号及列标
如下获取时间所在列
#查看time.log文件
[root@ffing_cn ~]cat time.log
2022年 03月 13日 星期六 13:50:16 CST
2022年 03月 13日 星期六 13:51:23 CST
2022年 03月 13日 星期六 13:51:24 CST
2022年 03月 13日 星期六 13:51:49 CST
2022年 03月 13日 星期六 13:52:07 CST
2022年 03月 13日 星期六 13:52:11 CST
2022年 03月 13日 星期六 13:52:13 CST
2022年 03月 13日 星期六 13:54:53 CST
2022年 03月 13日 星期六 13:57:59 CST
2022年 03月 13日 星期六 13:58:00 CST
2022年 03月 13日 星期六 13:58:10 CST
2022年 03月 13日 星期六 13:58:20 CST
2022年 03月 13日 星期六 13:58:44 CST
2022年 03月 13日 星期六 13:58:59 CST
#获取time.log日志中的开始时间节点及列标
[root@ffing_cn ~] head -n1 time.log|awk '/[0-9]:[0-9][0-9]:[0-9][0-9]/ {for(i=1;i<=NF;i++) if ($i~/[0-9]:[0-9][0-9]:[0-9][0-9]/)print $i " 所在列:" i}'
13:50:16 所在列:5
#获取time.log日志中的结束时间节点及列标
[root@ffing_cn ~] tail -n1 time.log|awk '/[0-9]:[0-9][0-9]:[0-9][0-9]/ {for(i=1;i<=NF;i++) if ($i~/[0-9]:[0-9][0-9]:[0-9][0-9]/)print $i " 所在列:" i}'
13:58:59 所在列:5
#列标+行行号
[root@ffing_cn ~] cat time.log|awk ' /[0-9]:[0-9][0-9]:[0-9][0-9]/ { for (i=1;i<=NF;i++) if ($i~/[0-9]:[0-9][0-9]:[0-9][0-9]/) print $i " 所在列:" i " 所在行:"NR } '
命令解析:
NR表示行号
发表评论