使用awk比较两个文件时文件名上的语法错误

时间:2015-05-09 17:56:51

标签: bash unix awk

如果第1列或第5列中的数字在file1中,我正在尝试使用awk打印一个文件2中包含的行,但是我收到了一个我不理解的语法错误。

我的意见是:

file1.dat

1
3
4
6
8
13
14
25

etc...

File2.DAT的

2 GLU 1 - 3 ARG 2
24 ASP 2 - 12 LYS 1
3 ASP 1 - 25 ARG 2
7 LYS 2 - 17 GLU 2
18 ARG 1 - 13 GLU 2

etc...

在这种情况下,我想要输出

2 GLU 1 - 3 ARG 2
3 ASP 1 - 25 ARG 2
18 ARG 1 - 13 GLU 2

我尝试使用以下awk-line

执行此操作
awk -F 'NR==FNR{a[$1||$5]++;next} (a[$1||$5])' file1.dat file2.dat

但我收到了错误

awk: file1.dat
awk:      ^syntax error

有谁知道导致此错误的原因是什么?我试图将文件名放入变量但产生相同的错误。

1 个答案:

答案 0 :(得分:3)

您已为字段分隔符提供了-F标记。因此,下一个参数是字段分隔符(这是您的脚本,因为您没有提供分隔符)。所以awk将第一个文件作为脚本本身。

尝试放弃-F或添加分隔符,例如awk -F '[ \t]*' '...' file1 file2