0

我有两个输入文件如下我需要将第二个文件中的不匹配行写入一个新文件。文件中的每一列由制表符分隔

输入 1

1       94564350        .       C       A
1       94564350        .       C       T

输入 2

1       94564351        .       A       T
1       94564351        .       A       C
1       94564350        .       C       A

输出是

1       94564351        .       A       T
1       94564351        .       A       C

我试过这个命令

awk -F"\t" 'NR==FNR{a[$0];next}($2 in a)&& $1>=3' fileB fileA >fileC

但不工作。

awk 'NR == FNR{a[$0];next} !($0 in a)'  fileA fileB

上面的命令也为大文件花费了太多时间是否还有其他选项可以做同样的事情

4

1 回答 1

0

试试这个取自惯用的 awk

awk 'NR == FNR{a[$0];next} !($0 in a)'  fileA fileB

您不需要 assign -F="\t", awk 会在此类文件上正确解释它。

测试

$ awk 'NR == FNR{a[$0];next} !($0 in a)'  fileA fileB
1       94564351        .       A       T
1       94564351        .       A       C
于 2013-06-04T11:07:40.617 回答