工作时,我有两个文件我用下面的代码使用AWK阵列有两个文件
file1
-------------------------------
1 a t p bbb
2 b c f aaa
3 d y u bbb
2 b c f aaa
2 u g t ccc
2 b j h ccc
file2
--------------------------------
1 11 bbb
2 22 ccc
3 33 aaa
4 44 aaa
合并他们基于密钥我用下面的代码
awk 'NR==FNR{a[$3]=$0;next;}{for(x in a){if(x==$5) print $1,$2,$3,$4,a[x]};
合并这两个文件基于密钥我问题是我如何将$ 2的file2保存在变量或数组中,并在[x]之后再次打印。
我期望的结果是:
1 a t p 1 11 bbb 11
2 b c f 3 33 aaa 33
2 b c f 4 44 aaa 44
3 d y u 1 11 bbb 11
2 b c f 3 33 aaa 33
2 b c f 4 44 aaa 44
2 u g t 2 22 ccc 22
2 b j h 2 22 ccc 22
正如你看到的第7个栏是我的代码合并的结果。我需要将最后一列([x]的第2个字段)添加到我的结果中。
重要:
我的下一个问题是,如果我有.awk文件,我怎么可以像使用(| column -t
)一些bash脚本代码或发送结果到文件(awk... > result.txt
)?我总是在命令提示符下使用这些代码。我可以在.awk文件的代码中使用它们吗?
@steve ..亲爱的史蒂夫,当我在bash脚本中使用你的代码,它给了我错误..你能告诉我我的错误在哪里下面 '命令= $(AWK -f' FNR == NR { 2 [$ 0] ++ 下 } { 为(ⅰ两个){ 分裂(ⅰ,一个,FS) 如果(一个[3] == $ NF){ 打印$ 1,$ 2,$ 3,$ 4,I,一个[2] } } } “$ $的file1 file2的) 回波-e $命令|列-t – mohammad
@mohammad:我发现了错误。你应该使用'$ 1'和'$ 2'(shell参数)而不是'$ file1'和'$ file2'。请参阅我的更新。固定。 – Steve