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

基于列的一部分,使用awk在unix中合并2个文件,unix,awk,ksh,Unix,Awk,Ksh,我有两个文件的数据格式为: File1 Format : Customer_Key | Customer_DOB File2 Format : Customer_ID | Customer_Key | Customer_DOB 我的目标是比较Customer_DOB字段,它是时间戳格式YYYYMMDDH24miss中的日期。但我面临的问题是,我必须只比较DOB字段的日期部分,而不考虑时间部分。也就是说,如果File1.Customer_DOB是19900101000000,File1.Cus

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

File1 Format : Customer_Key | Customer_DOB 
File2 Format : Customer_ID | Customer_Key | Customer_DOB
我的目标是比较Customer_DOB字段,它是时间戳格式YYYYMMDDH24miss中的日期。但我面临的问题是,我必须只比较DOB字段的日期部分,而不考虑时间部分。
也就是说,如果File1.Customer_DOB是19900101000000,File1.Customer_DOB是19900101122543,这两个字段将被视为相同

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

Customer_ID | Customer_Key | File1.Customer_DOB | File2.Customer_DOB
文件1的样本日期

900899036|899036|19630110000000
900899039|899039|19810701000000
900899044|899044|19900223000000
文件样本日期2

899036|1963011122515
2699053|20000101132410
899039|19880501230110
2699052|19890224121014
899044|19900223011214
输出文件

900899039|899039|**19810701000000**|**19880501230110**
我必须生成一份日期不匹配的报告

我有这么多的例子来合并基于公共列的文件,但我在我的案例中被绊倒了

谢谢您的建议。

已修复,但:

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

使用
{}
命令将代码标记添加到文章中,使其更具可读性。编辑文章时,您可以在工具栏中找到它。标记文本并单击命令。不基于
awk
的解决方案也可以接受吗?我可以假设文件1中的每一行都有一行与文件2中的Customer\u键匹配吗?@Alfe…事实上,我已尽了最大努力使用awk…但任何命令都可以…对于文件1中的每一条记录,文件2中没有记录或只有一条记录,是否要根据
客户密钥匹配记录?一些样本输入数据和预期结果将是有用的。