如何筛选file1中首列值未出现在其余文件中的完整行?
解决方案
可以用awk命令快速实现需求,它能一次性处理所有文件并完成匹配判断:
awk 'FNR==NR { arr[$1]; next } !($1 in arr)' file2 file3 file4 file5 file6 file7 file1
命令说明
- 前半部分
FNR==NR { arr[$1]; next }:处理file2到file7这些对比文件时,把每个行的第一列内容存入数组arr的键中,完成后跳过后续逻辑,继续处理下一行 - 后半部分
!($1 in arr):处理基准文件file1时,检查当前行的第一列是否不在之前收集的数组里,若不在则输出整行
如果你的文件命名是规律的(比如file2到file7),可以用通配符简化命令:
awk 'FNR==NR { arr[$1]; next } !($1 in arr)' file{2..7} file1
示例验证
用你提供的file1、file2、file3测试,运行命令:
awk 'FNR==NR { arr[$1]; next } !($1 in arr)' file2 file3 file1
会输出:
Xavier 12 30 Ram 34 57 Jancy 56 34
完全符合预期结果。
内容的提问来源于stack exchange,提问作者user15571
相关产品推荐
相关产品推荐

