如何编写AWK命令来查找差异和比较

时间:2018-03-05 08:12:27

标签: bash awk

我是BASH的新手,我正在尝试编写一个基本脚本来满足我的以下要求,但我被困住了,并且非常感谢您理解的帮助

要求:

我有一个输出的命令,我只需要使用关键字" Executin"找出开始时间与系统时间的差异,如果差异超过4小时,则显示整行。

OUTPUT:(按空格分隔)

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 ;}' 

获取语法错误

1 个答案:

答案 0 :(得分:0)

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则打印记录。