Awk 比较两个文件是否匹配,打印找到的所有匹配项
我试图将File1的column1的每个条目与File2进行比较,并同时打印这两个条目。文件1的第1列可能有重复的条目。如果输入重复,我只能看到一个输出行;但我两者都想要 我的代码是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
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如果我的文件不按排序顺序怎么办?如果我的文件不按排序顺序怎么办?