0

我需要比较两个文件 f1.txt 和 f2.txt 并获取匹配项和不匹配项,对于这种情况,我希望匹配两个文件上的第一个字段。并首先打印 f2.txt 的第二个字段,然后打印 f1.txt 的整行。如果在 f2.txt 上找不到匹配项,则声明“未找到”,然后打印 f1.txt 整行。

F1.txt

1;2;3;4;5;6;7;8
1a;2;3;4;5;6;7;8
1b;2;3;4;5;6;7;8
2b;2;3;4;5;6;7;8

F2.txt

1;First
1a;Firsta
1b;Firstb

期望的输出:

First;1;1;2;3;4;5;6;7;8
Firsta;1a;1a;2;3;4;5;6;7;8
Firstb;1b;1b;2;3;4;5;6;7;8
Not Found;2b;2;3;4;5;6;7;8

我能够获得匹配但不是非匹配

awk -F ";" -v OFS="";"" "NR==FNR{a[$1]=$2;next}a[$1]{print a[$1],$0}" f2.txt f1.txt

谢谢

4

2 回答 2

3

这应该这样做:

awk -F";" 'NR==FNR{a[$1]=$2;next}{if (a[$1])print a[$1],$0;else print "Not Found", $0;}' OFS=";" f2.txt f1.txt
于 2012-10-29T05:43:52.600 回答
0

这非常有用。我进行了一些更改以获取 2 个文件之间的数据,并且每个文件中只有 1 列。

awk 'BEGIN { OFS=FS=";" } FNR==NR { array[$1]=$1; next } { print ($1 in array ? array[$1] : "Not Found"), $0 }' file1 file2
于 2013-02-28T06:12:55.857 回答