如何编写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 查找两个文件中第二个字段之间的差异

git工程如何查找不同的代码

使用基于动态列作为变量的AWK比较2个文件,并打印差异A-B和B-A

如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)

在 Rails 中,如何编写一个带有“where”的查找器来比较两个日期?

linux cmp-比较两个文件是否有差异