Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 比较具有多列的2个文件| shell_Bash_Shell_Awk - Fatal编程技术网

Bash 比较具有多列的2个文件| shell

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

我有两个文件fil1.txt和fil2.txt

我的要求是比较两个文件的column1column3,如果匹配,则检查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
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,是的,很好的观点是,谢谢一大群人很高兴知道它成功了,