Bash 比较具有多列的2个文件| shell
我有两个文件fil1.txt和fil2.txt 我的要求是比较两个文件的column1和column3,如果匹配,则检查column2值,如果column2值小于等于第二个文件的column2值,则将其从列表中删除并打印其余条目 下面的例子- fil1.txt包含内容Bash 比较具有多列的2个文件| shell,bash,shell,awk,Bash,Shell,Awk,我有两个文件fil1.txt和fil2.txt 我的要求是比较两个文件的column1和column3,如果匹配,则检查column2值,如果column2值小于等于第二个文件的column2值,则将其从列表中删除并打印其余条目 下面的例子- fil1.txt包含内容 abc 25 bcd xyz 30 efg pqr 25 qrs abc 30 bcd xyz 30 efg rst 25 uvw pqs 35 lmn fil2.txt包含内容 abc 25 bcd xyz 30 efg p
abc 25 bcd
xyz 30 efg
pqr 25 qrs
abc 30 bcd
xyz 30 efg
rst 25 uvw
pqs 35 lmn
fil2.txt包含内容
abc 25 bcd
xyz 30 efg
pqr 25 qrs
abc 30 bcd
xyz 30 efg
rst 25 uvw
pqs 35 lmn
我的输出应该是
pqr 25 qrs
下面的代码正在运行,但不确定如何比较第2列的值
awk 'FNR==NR{a[$1,$3];next} !(($1,$3) in a)' fil1.txt fil2.txt
您可以使用此
awk
:
awk'FNR==NR{a[$1,$3]=$2;next}$2>a[$1,$3]'文件2文件1
pqr 25 qrs
您可以使用此awk
:
awk'FNR==NR{a[$1,$3]=$2;next}$2>a[$1,$3]'文件2文件1
pqr 25 qrs
$2>a[$1,$3]
足以覆盖第一个谓词。谢谢@karakfa,是的,很好的观点是,它成功了,谢谢一大群人很高兴知道它成功了,$2>a[$1,$3]
足以覆盖第一个谓词。谢谢@karakfa,是的,很好的观点是,谢谢一大群人很高兴知道它成功了,