我想比较两个文件file1.txt和file2.txt的前两列,如果它们匹配,则写入另一个文件output.txt,其中包含file1,file 2的第三列以及匹配的详细信息(如果匹配)或不。
FILE1.TXT
ab|2001|name1
cd|2000|name2
ef|2002|name3
gh|2003|name4
FILE2.TXT
xy|2001|name5
cd|2000|name6
ef|2002|name7
gh|2003|name8
output.txt的
name1 name5 does not match
name2 name6 matches
name3 name7 matches
name4 name8 matches
答案 0 :(得分:0)
你可以使用paste和awk来获得你想要的东西。
以下解决方案假设file1和file2中的字段将始终由" |"
分隔paste -d "|" file1.txt file2.txt | awk -F "|" '{ if( $1 == $4 && $2 == $5 ){print $3, $6, "matches"} else {print $3, $6, "does not match"} }' > output.txt
答案 1 :(得分:0)
欢迎来到堆栈溢出,请您试试,请告诉我这是否对您有帮助。
awk -F"|" 'FNR==NR{a[$2]=$1;b[$2]=$3;next} ($2 in a) && ($1==a[$2]){print b[$2],$3,"matched properly.";next} {print b[$2],$3,"Does NOT matched."}' file1.txt file2.txt
编辑:此处也添加非单线形式的解决方案。
awk -F"|" '
FNR==NR{
a[$2]=$1;
b[$2]=$3;
next
}
($2 in a) && ($1==a[$2]){
print b[$2],$3,"matched properly.";
next
}
{
print b[$2],$3,"Does NOT matched."
}
' file1.txt file2.txt