使用基于列的一部分的awk合并unix中的2个文件

时间:2014-05-22 07:34:36

标签: unix awk ksh

我有两个格式为数据的文件:

File1 Format : Customer_Key | Customer_DOB 
File2 Format : Customer_ID | Customer_Key | Customer_DOB

我的目标是比较时间戳格式为YYYYMMDDHH24MISS的日期Customer_DOB字段。但我面临的问题是我必须只比较DOB字段的日期部分而不考虑时间部分。
即,如果File1.Customer_DOB是19900101000000而File1.Customer_DOB是19900101122543,则这两者都将被视为相同。

我需要生成一个输出文件,其中包含日期不匹配的列。输出文件格式为:

Customer_ID | Customer_Key | File1.Customer_DOB | File2.Customer_DOB

File1的样本日期

900899036|899036|19630110000000
900899039|899039|19810701000000
900899044|899044|19900223000000

File2的样本日期

899036|1963011122515
2699053|20000101132410
899039|19880501230110
2699052|19890224121014
899044|19900223011214

输出文件

900899039|899039|**19810701000000**|**19880501230110**

我必须生成一个报告,其中存在日期不匹配

我有很多例子可以根据公共列合并文件,但我的情况让我感到困惑。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

固定但是:

awk 'NR==FNR{a[$1]=$2;next}{if ($3!=a[$2]){$3="**"$3"|**"a[$2]"**"};print}' OFS='|' FS='|' f2 f1