Java Process Builder如何在差异之前对2个文件进行排序
我有一个Java进程,可以找到两个CSV之间的差异。它返回已添加/更改/删除的行
代码的主要部分如下:
ProcessBuilder pb = new ProcessBuilder("/usr/bin/diff", file1.toString(), file2.toString());
Process process;
try
{
process = pb.start();
}
...
问题是,如果文件没有事先排序,差异逻辑将不准确。举例来说,假设我有以下两个数据集:
DATA 1 DATA2
"10000,x,x" "10000,y,y"
"10000,y,y" "10000,x,x"
清单是一样的,但顺序不同。因此,我当前的逻辑将认为ID为10000
的行已更改。应用差异的正确方法是对排序后的数据进行处理,例如
DATA 1 DATA2
"10000,x,x" "10000,x,x"
"10000,y,y" "10000,y,y"
我的问题是,什么是Java中的工作实现,它相当于以下内容
diff -> sort(file1) sort(file2)
# 1 楼答案
似乎有一个相对简单的解决方案
更清楚地说,这相当于
bash -c 'diff <(sort text2) <(sort text1)'