小编Rin*_*nku的帖子

仅根据第一列比较两个文件,并从 shell 脚本中的第二个文件中删除重复行

我会用一个例子来问我的问题。我有2个文件:

文件#1

002948998 752986QAK NTR974VTS 0000000    
102948932 752986QSC NTR974VTS 0000000    
102948933 752986QSC NTR974VTS 0000000
Run Code Online (Sandbox Code Playgroud)

文件#2

002901998 752986KFK NTR974MTS 0990000
002948998 752986QAQ NTR974VTS 0000000
002901998 752986KFK NTR974MTJ 0990000
Run Code Online (Sandbox Code Playgroud)

期望的输出:

002948998 752986QAK NTR974VTS 0000000    
102948932 752986QSC NTR974VTS 0000000    
102948933 752986QSC NTR974VTS 0000000    
002901998 752986KFK NTR974MTS 0990000
Run Code Online (Sandbox Code Playgroud)

注意:行之间没有间隙(输入)。

我想使用文件 1 和文件 2 的第一列进行比较,如果它们在文件 1 中匹配,则从文件 2 中删除整行。我还想将结果保存到第一个文件或新文件 file # 3,其中包含文件 1 和文件 2 中的所有条目(没有文件 2 中的重复项)。请在 shell 脚本中提供一个好的解决方案。

目前我正在使用:

awk 'FNR==NR {a[$1];print;next} !($1 in a)' file1 file2 > file3
Run Code Online (Sandbox Code Playgroud)

但它并不是仅基于第一列进行比较。相反,它正在比较整行。

请帮忙。

unix shell awk compare

1
推荐指数
1
解决办法
2376
查看次数

标签 统计

awk ×1

compare ×1

shell ×1

unix ×1