去营救!此解决方案不需要排序输入。你必须先提供文件B。awk 'NR==FNR{a[$0];next} !($0 in a)' fileB fileA回报A
C它怎麽工作?NR==FNR{a[$0];next}成语用于将第一个文件存储在关联数组中,作为以后的“包含”测试的键。NR==FNR正在检查是否正在扫描第一个文件,其中全局行计数器(NR)等于当前文件行计数器(FNR)。a[$0]将当前行作为键添加到关联数组中,请注意,它的行为类似于一个集合,其中不会有任何重复的值(键)。!($0 in a)我们现在下一个档案里,in是一个包含测试,在这里它检查当前行是否在我们从第一个文件的第一步中填充的集合中,!否定了条件。这里缺少的是操作,默认情况下它是{print}而且通常没有写得很清楚。请注意,这现在可以用来删除黑名单上的单词。$ awk '...' badwords allwords > goodwords只要稍加修改,它就可以清理多个列表并创建已清理的版本。$ awk 'NR==FNR{a[$0];next} !($0 in a){print > FILENAME".clean"}' bad file1 file2 file3 ...