使用awk根据一列删除线从另一个文件



我有以下代码,用于从多列file_1中提取在单列file_2中出现的第一列中具有值的行:

awk 'NR==FNR{a[$1][$0];next} $0 in a {for (i in a[$0]) print i}' file_1 file_2

我从这个问题的答案中得到了这个代码:AWK根据另一个文件的列过滤文件

我想修改代码来做相反的事情,即删除file_1中第一列匹配单列file_2中出现的任何值的每一行。我该怎么做呢?

awk 'NR==FNR { arr[$0]="1";next  } arr[$1]!="1" { print $0 }' file2 file1

首先处理第二个文件(NR==FNR),并创建一个名为arr的数组,其中行($0)作为键,1作为值。然后,在处理下一个文件(file1)时,检查第一个以空格分隔的字段($1)是否作为数组arr中的键存在,如果不存在,则打印该行。

如果要存储结果,则将输出定向到一个文件:

awk 'NR==FNR { arr[$0]="1";next  } arr[$1]!="1" { print $0 }' file2 file1 > file3

相关内容

  • 没有找到相关文章

最新更新