Text awk比较2个文件,打印匹配和差异

Text awk比较2个文件,打印匹配和差异,text,awk,compare,Text,Awk,Compare,我需要复制两个文件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 期望输出: Firs

我需要复制两个文件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
谢谢

这应该可以:

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
这应该做到:

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
这是非常有用的。 我做了一些修改,在两个文件之间获取数据,每个文件中只有一列

awk 'BEGIN { OFS=FS=";" } FNR==NR { array[$1]=$1; next } { print ($1 in array ? array[$1] : "Not Found"), $0 }' file1 file2
这是非常有用的。 我做了一些修改,在两个文件之间获取数据,每个文件中只有一列

awk 'BEGIN { OFS=FS=";" } FNR==NR { array[$1]=$1; next } { print ($1 in array ? array[$1] : "Not Found"), $0 }' file1 file2

@萨拉西:你为什么要删除OFS并硬编码分号?有什么特别的原因吗?@Guru,我回到了你的修订版。不过,不要害怕空格,它极大地提高了可读性。@sarathi:为什么要删除OFS并硬编码分号?有什么特别的原因吗?@Guru,我回到了你的修订版。不过,不要害怕空格,它极大地帮助了可读性。为什么OFS使用双引号?@glennjackman我使用的是Windows Awk版本,这就是双引号的原因,关于OFS为什么使用双引号?@glennjackman我使用的是Windows Awk版本,这就是双引号的原因,谢谢