如何编写AWK命令来查找差异和比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写AWK命令来查找差异和比较相关的知识,希望对你有一定的参考价值。
我是BASH的新手,我正在尝试编写一个基本脚本来满足我的以下要求,但我被困住了,你的理解是非常感谢
需求:
我有一个命令给出输出,我需要只带有关键字“Executin”的列,找到开始时间与系统时间的差异,如果差异超过4小时则显示整行。
输出:(以空格分隔)
UNIQUE ID FILENAME TYPE DATE STATE STATUS STARTED ENDED
-------- ----------------- ---- -------- -------- ------
0000k66w ABCDEF TBL 20180224 Executin OK 20180224060128
0000k678 GHIJKL TBL 20180224 Ended OK OK 20180227060202 20180228054016
0000k67a MNOPQRS TBL 20180224 Executin OK 20180224200000
0000k67d PBKPUXBIP1XD01G TBL 20180224 FAILED OK 20180227150000 20180227150118
我试图在上面的输出上应用的脚本是
//mycommand | awk' {if ($5 == Executin) && if(( `date '+%Y%m%d%H%M%S'` - $7 ) gt 40000)} ; print ;}'
获取语法错误
答案
AWK
$ awk 'BEGIN{ "date +%Y%m%d%H%M%S" | getline d} {if($5=="Executin") if(d-$7>40000) print}'
"date +%Y%m%d%H%M%S" | getline d;
:日期将在d
存储。系统调用很昂贵并且将其保存在BEGIN
块中将在awk处理开始时仅触发一次该系统调用,从而提高性能。
if(d-$7>40000) print
:如果差异是>40000
打印记录。
以上是关于如何编写AWK命令来查找差异和比较的主要内容,如果未能解决你的问题,请参考以下文章
使用基于动态列作为变量的AWK比较2个文件,并打印差异A-B和B-A
如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)