从一个 CSV 文件中删除已存在于另一个文件中的条目

pgr*_*son 6 shell-script text-processing csv-simple

我有两个文件:“file1”有员工 ID 号,“file2”有员工的完整数据库。这是它们的样子:

我想比较两个文件,并消除来自条目file2有ID号在file1

我发现这个awk命令完美运行:

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

结果:

所以这按预期工作。

我的问题是这些文件实际上是简化.csv文件,我必须使用逗号作为分隔符而不是空格。我已经试过所有我能想到的,使这项工作(即-F,-F','-F"," 无处不在的命令),并没有成功。

我如何让它与.csv文件一起工作?

顺便说一句,我使用的是 MacBook Pro,OSX Lion!

dev*_*ull 5

我假设你的csv文件是这样的:

文件 1

123123,,
222333,,
Run Code Online (Sandbox Code Playgroud)

文件 2

111222,Jones,Sally
111333,Johnson,Roger
123123,Doe,John
444555,Richardson,George
222333,Smith,Jane
223456,Alexander,Philip
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用该join命令,如下所示:

# join -t, -v 2 <(sort file1) <(sort file2)
111222,Jones,Sally
111333,Johnson,Roger
223456,Alexander,Philip
444555,Richardson,George
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关该命令的更多信息:man join

join [OPTION]... FILE1 FILE2

-t CHAR
    use CHAR as input and output field separator 
-v FILENUM
    like -a FILENUM, but suppress joined output lines 
Run Code Online (Sandbox Code Playgroud)