我有两个输入文件,如下所示,我需要将第二个文件中的不匹配行写入新文件。文件中的每一列均由制表符空格分隔
输入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
上面的命令对于大文件也花费了太多时间是否有其他选项可以执行相同的操作
最佳答案
尝试一下来自Idiomatic awk的这个:
awk 'NR == FNR{a[$0];next} !($0 in a)' fileA fileB
您不需要分配 -F="\t"
,awk 会在此类文件上正确解释它。
测试
$ awk 'NR == FNR{a[$0];next} !($0 in a)' fileA fileB
1 94564351 . A T
1 94564351 . A C
关于linux - 如何将两个文件中不匹配的行存储到新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915821/