pgr*_*son 6 shell-script text-processing csv-simple
我有两个文件:“file1”有员工 ID 号,“file2”有员工的完整数据库。这是它们的样子:
file1
123123
222333
Run Code Online (Sandbox Code Playgroud)
file2
111222 Jones Sally
111333 Johnson Roger
123123 Doe John
444555 Richardson George
222333 Smith Jane
223456 Alexander Philip
Run Code Online (Sandbox Code Playgroud)
我想比较两个文件,并消除来自条目file2有ID号在file1。
我发现这个awk命令完美运行:
awk 'FNR==NR{a[$1];next};!($1 in a)' file1 file2 > file3
Run Code Online (Sandbox Code Playgroud)
结果:
file3
111222 Jones Sally
111333 Johnson Roger
444555 Richardson George
223456 Alexander Philip
Run Code Online (Sandbox Code Playgroud)
所以这按预期工作。
我的问题是这些文件实际上是简化.csv文件,我必须使用逗号作为分隔符而不是空格。我已经试过所有我能想到的,使这项工作(即-F,,-F',',-F"," 无处不在的命令),并没有成功。
我如何让它与.csv文件一起工作?
顺便说一句,我使用的是 MacBook Pro,OSX Lion!
我假设你的csv文件是这样的:
123123,,
222333,,
Run Code Online (Sandbox Code Playgroud)
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)