[英]Compare two txt files with awk, both have 4 columns present in it
我有两个txt文件,比方说file1和file2有4列.....表名,列名,数据类型,长度
File1包含
Emp name varchar 30
Emp ID int 20
Emp age int 3
Emp no int 10
File2包含
Emp name varchar 30
Emp ID varchar 20
Emp age int 5
Emp DOB. Date 10
我想根据第1列和第2列(表名,列名)比较file1和file2
根据这2列比较数据类型和长度列是否存在不匹配
如果数据类型或长度不匹配,则显示相应的行,例如(两个文件中的数据,同一行)
Emp age int 3 Emp age int 5
输出文件1中的唯一行,例如
Emp emailid varchar 50
作为另一个命令的输出
当我对文件1的唯一记录使用comm命令时,它给出如下输出
Emp ID int 20
Emp age int 3
Emp no int 10
但只希望o / p
Emp no int 10
因为列2(表名,列名)也存在于文件2中。
根据您的详细描述,我想出了这句话:
awk '{k=$1FS$2}NR==FNR{a[k]=$3FS$4;next}
k in a{if($3FS$4!=a[k])print $0,k,a[k];next}7' file2 file1
使用给定的输入文件:
kent$ head f1 f2
==> f1 <==
Emp name varchar 30
Emp ID int 20
Emp age int 3
Emp no int 10
==> f2 <==
Emp name varchar 30
Emp ID varchar 20
Emp age int 5
Emp DOB. Date 10
kent$ awk '{k=$1FS$2}NR==FNR{a[k]=$3FS$4;next}k in a{if($3FS$4!=a[k])print $0,k,a[k];next}7' f2 f1
Emp ID int 20 Emp ID varchar 20
Emp age int 3 Emp age int 5
Emp no int 10
注意所有区分大小写。 例如, id
和ID
不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.