使用awk命令比较两个文件

时间:2013-05-21 21:31:08

标签: unix awk

我有两个文件,比如file1file2,需要进行比较并将其放入file3

file1

red
green
blue
red
yellow
pink
orange

file2

domain1,red,-
domain2,-,green
domain3,blue,-
domain4,yellow,pink
domain5,grey,orange

现在我需要file3中的输出:

domain1,red
domain2,green
domain3,blue
domain1,red
domain4,yellow
domain4,pink
domain5,orange

对于file1中的每条记录,如果匹配,则需要生成$1作为必填项,匹配值为$2$3来自file2,如果两者($ 2,$ 3)匹配,那么它应该是两个记录(单个记录也可以)为“domain5,pink,orange”。

我是awk命令的新手。请用awk帮助我实现这一目标!

我有这个简单的命令,这不足以满足我的条件

awk 'NR==FNR{x[$1];next}($2,$3) in x' FS=',' file1 file2 >file3

1 个答案:

答案 0 :(得分:3)

awk -F, 'BEGIN{OFS=","} 
         NF>1 {s[$2]=s[$3]=$1;} 
         NF==1 {print s[$1],$1}' input2 input1

<强>输出

domain1,red
domain2,green
domain3,blue
domain1,red
domain4,yellow
domain4,pink
domain5,orange