Awk 比较两个文件是否匹配,打印找到的所有匹配项

Awk 比较两个文件是否匹配,打印找到的所有匹配项,awk,Awk,我试图将File1的column1的每个条目与File2进行比较,并同时打印这两个条目。文件1的第1列可能有重复的条目。如果输入重复,我只能看到一个输出行;但我两者都想要 我的代码是awk'FNR==NR{a[$1]=$0;next}$1在{print$0“\t”a[$1]}File1.txt File2.txt文件中 File1.txt aa c d aa c e File2.txt aa 5 aa 7 aa 9 bb 7 cc 1 预期产量 aa 5 aa

我试图将File1的column1的每个条目与File2进行比较,并同时打印这两个条目。文件1的第1列可能有重复的条目。如果输入重复,我只能看到一个输出行;但我两者都想要

我的代码是
awk'FNR==NR{a[$1]=$0;next}$1在{print$0“\t”a[$1]}File1.txt File2.txt文件中

File1.txt

aa  c   d
aa  c   e
File2.txt

aa  5
aa  7
aa  9
bb  7
cc  1
预期产量

aa  5   aa  c   d
aa  7   aa  c   d
aa  9   aa  c   d
aa  5   aa  c   e
aa  7   aa  c   e
aa  9   aa  c   e
我的代码是什么

aa  5   aa  c   e
aa  7   aa  c   e
aa  9   aa  c   e

这是
join
命令的一种情况:

$ join File{1,2}.txt
aa c d 5
aa c d 7
aa c d 9
aa c e 5
aa c e 7
aa c e 9
输出不完全符合您的要求,因此,让我们解决这个问题:

$ join File{1,2}.txt | awk '{$1 = $1 FS $NF FS $1; $NF = ""; print}'
aa 5 aa c d
aa 7 aa c d
aa 9 aa c d
aa 5 aa c e
aa 7 aa c e
aa 9 aa c e

如果输入文件没有排序,那么(假设您的shell是bash/ksh/zsh)


join这是
join
命令的一种情况:

$ join File{1,2}.txt
aa c d 5
aa c d 7
aa c d 9
aa c e 5
aa c e 7
aa c e 9
输出不完全符合您的要求,因此,让我们解决这个问题:

$ join File{1,2}.txt | awk '{$1 = $1 FS $NF FS $1; $NF = ""; print}'
aa 5 aa c d
aa 7 aa c d
aa 9 aa c d
aa 5 aa c e
aa 7 aa c e
aa 9 aa c e

如果输入文件没有排序,那么(假设您的shell是bash/ksh/zsh)


join与
sort/join

$ join <(sort file2) <(sort file1) -o1.1,1.2,2.1,2.2,2.3

aa 5 aa c d
aa 5 aa c e
aa 7 aa c d
aa 7 aa c e
aa 9 aa c d
aa 9 aa c e

$join与
排序/加入

$ join <(sort file2) <(sort file1) -o1.1,1.2,2.1,2.2,2.3

aa 5 aa c d
aa 5 aa c e
aa 7 aa c d
aa 7 aa c e
aa 9 aa c d
aa 9 aa c e

$join如果我的文件不按排序顺序怎么办?如果我的文件不按排序顺序怎么办?