如何修改awk代码删除file_1中首列匹配file_2值的行
解决方案
你可以调整awk的处理逻辑和文件读取顺序,实现删除file_1中首列值在file_2中出现过的行的需求,代码如下:
awk 'NR==FNR {exclude[$0]; next} !($1 in exclude)' file_2 file_1
代码逻辑说明
- 先读取单列文件
file_2,把每一行的内容作为键存入exclude数组,标记所有需要排除的首列值 NR==FNR是awk的常用判断规则:仅在处理第一个输入文件(此处为file_2)时触发当前代码块- 读取完
file_2后开始处理file_1,判断当前行的首列$1不在exclude数组中时,直接输出该行,最终仅保留file_1中首列从未在file_2中出现过的行 - 注意输入文件的顺序为
file_2在前、file_1在后,不要写反
内容的提问来源于stack exchange,提问作者Abdel
相关产品推荐
相关产品推荐

