Aja*_*air 7 shell text-processing files
我正在寻找一种有效的方法来实现 2 个文件的集差异。我知道这grep -vxF -f setA setB给了我 B - A。这就是我想要的,但我的文件如下:
setA:
2
4
5
6
set B:
1 123
2 abc
3 def
4 hij
Run Code Online (Sandbox Code Playgroud)
我想根据集合B的第一列计算集合差;因此 B - A 的预期输出将是:
1 123
3 def
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一目标的任何指示?
Sté*_*las 15
这通常join是为了:
join -v2 setA setB
Run Code Online (Sandbox Code Playgroud)
这是连接第一列上的文件(假设按词法排序),并打印第二个文件中未配对的行。
awk 'NR==FNR {key[$1]; next} !($1 in key)' setA setB
Run Code Online (Sandbox Code Playgroud)
1 123
3 def
Run Code Online (Sandbox Code Playgroud)
读取第一个文件并将“ids”存储在数组“key”中,然后如果id不在key数组中,它只会从第二个文件打印。