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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用基于动态列作为变量的AWK比较2个文件,并打印差异A-B和B-A相关的知识,希望对你有一定的参考价值。

档案1:

'SR'|'2017-09-01 00:19:13'|'+05:30'|'1A3LA7015L5O'|'5042449534546015801549'

'SR'|'2017-09-01 00:19:13'|'+05:30'|'1A3LA7015L5O'|'5042449534546015801677'

'SR'|'2017-09-01 00:19:13'|'+05:30'|'1A3LA7015L5Q'|'5042449536906016501541'

'SR'|'2017-09-01 00:19:20'|'+05:30'|'1A3LA7015L6I'|'5042449603146028701541'

文件2:

'SR'|'2017-09-01 00:19:13'|'+05:30'|'1A3LA7015L5Q'|'5042449536906016501541'

'SR'|'2017-09-01 00:19:20'|'+05:30'|'1A3LA7015L6I'|'5042449603146028701548'

我想要的OutPut是A-B和B-A

我尝试了下面的命令,但它似乎无法正常工作..

var1=5
awk -F "|" -v col="$var1" 'NR==FNR{a[$2];next} !($col in a)' File1 File2
awk -F "|" -v col="$var1" 'NR==FNR{a[$2];next} !($col in a)' File1 File2
答案

我得到了解决方案,我正在做的错误是在{a[$2];next}中给出错误的列号

我必须比较第5列,它将像:

awk -F "|" -v col="$var1" 'NR==FNR{a[$5];next} !($col in a)' File1 File2
awk -F "|" -v col="$var1" 'NR==FNR{a[$5];next} !($col in a)' File1 File2

以上是关于使用基于动态列作为变量的AWK比较2个文件,并打印差异A-B和B-A的主要内容,如果未能解决你的问题,请参考以下文章

awk 日期到日志文件中的纪元并打印其他列

使用 awk 比较两个文件并打印不匹配的记录

awk查找指定行指定列的数据 并输出到文件

awk查找指定行指定列的数据 并输出到文件

awk实用语法

Linux文本处理神器awk实战案例