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

时间:2016-08-03 18:04:52

标签: awk

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

1 x 12345 x x x

file2的

1,12345,x,x,x

脚本

awk -F',' FNR==NR{a[$1]=$1,$3; next} ($1,$2 in a) {print}' file1 file2 > output.txt

2 个答案:

答案 0 :(得分:3)

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

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

1,12345,x,x,x

答案 1 :(得分:1)

你几乎钉了它!

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

<强>输出

1,12345,x,x,x

备注

  1. 由于两个文件的字段分隔符不同,我们在文件之间进行了更改。
  2. 此脚本假设每个文件的第一个字段是唯一的,否则脚本会中断
  3. 请参阅文件之间的[ switching field separator ]