shell 脚本获取字段所在行号及列标

shell 脚本获取字段所在行号及列标

日志过滤时,总是要打印时间段,所以获取时间字段所在行号及列标,当日你可以去其他字段。

语法格式:
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表示行号

https://qnimg.ffing.cn/wp-content/uploads/2022/03/image-28.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0
https://qnimg.ffing.cn/wp-content/uploads/2022/03/image-29.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0
good good study, day day up!

发表评论

textsms
account_circle
email

shell 脚本获取字段所在行号及列标
日志过滤时,总是要打印时间段,所以获取时间字段所在行号及列标,当日你可以去其他字段。 语法格式: awk '/过滤字段/{for(i=1;i<=NF;i++)if($i~/过滤字段/)print $i" 所在列:"i" …
扫描二维码继续阅读
2022-03-25