我有两个列不均匀的文件,我想比较这两个文件并从file1中删除匹配的行
文件1:
nt1 ID420
nt1 ID42
nt56 ID6008
ht44 ID555
lt12 ID34
lt12 ID3434
ntt56 ID667
klll ID87693
file2的
nt23 ID42
ht44 ID555
lt12 ID3434
所需的输出:
nt1 ID420
nt56 ID6008
lt12 ID34
ntt56 ID667
klll ID87693
我在之前的帖子中使用过以下命令,但结果并不完全匹配,而是采用匹配的初始字符。我在awk命令上没有太多exp,我需要awk单行命令或sed或类似的shell脚本来获取此输出。提前谢谢你:
awk -FS=" " 'NR==FNR {b[$0]; next} {for (x in b) if($0 ~ x) next;print $0}' file2 file1 > outputfile
答案 0 :(得分:7)
这将是最快的:
grep -vFxf file2 file1
使用awk:
awk 'NR==FNR {exclude[$0];next} !($0 in exclude)' file2 file1
如果您不关心输出是否已排序,则这是comm
的用途:
comm -23 <(sort file1) <(sort file2)