我需要两个文件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
这非常有用。我已经更改了一些以在2个文件之间获取数据,并且每个文件中只有1列。
awk 'BEGIN { OFS=FS=";" } FNR==NR { array[$1]=$1; next } { print ($1 in array ? array[$1] : "Not Found"), $0 }' file1 file2