在两个文件之间匹配两个字段AWK

在两个文件之间匹配两个字段AWK,awk,Awk,正在尝试将另一个文件中的字段1,3与字段1,2匹配,并打印第二个文件的行。第一个文件以制表符分隔,第二个文件以csv分隔。意外的令牌错误? 文件1 文件2 剧本 你差一点就搞定了 awk 'NR==FNR{first[$1]=$3;next} $1 in first{if(first[$1]==$2){print}}' file1 FS="," file2 输出 注释 由于两个文件的字段分隔符不同,我们在两个文件之间对其进行了更改。 此脚本假定每个文件的第一个字段是唯一的,否则脚本将中断 请参

正在尝试将另一个文件中的字段1,3与字段1,2匹配,并打印第二个文件的行。第一个文件以制表符分隔,第二个文件以csv分隔。意外的令牌错误? 文件1

文件2

剧本

你差一点就搞定了

awk 'NR==FNR{first[$1]=$3;next} $1 in first{if(first[$1]==$2){print}}' file1 FS="," file2
输出

注释

由于两个文件的字段分隔符不同,我们在两个文件之间对其进行了更改。 此脚本假定每个文件的第一个字段是唯一的,否则脚本将中断
请参阅中间文件

相同的想法,但不取决于第一个字段的唯一性,而是取决于该字段对的唯一性

$ awk 'NR==FNR{a[$1,$3]; next} ($1,$2) in a' file1 FS=, file2

1,12345,x,x,x

FS的切换非常优雅;我借用了answer的技巧,仍然有问题。。。我是否需要添加-F'、“参数”@mxttgen31有什么问题?您能添加更多的示例输入和预期输出吗?FS=,成功了!谢谢打败我吧++^1在文件之间设置FS的好用法。
awk -F',' FNR==NR{a[$1]=$1,$3; next} ($1,$2 in a) {print}' file1 file2 > output.txt
awk 'NR==FNR{first[$1]=$3;next} $1 in first{if(first[$1]==$2){print}}' file1 FS="," file2
1,12345,x,x,x
$ awk 'NR==FNR{a[$1,$3]; next} ($1,$2) in a' file1 FS=, file2

1,12345,x,x,x