Java 比较程序文件input.txt和文件output.txt

Java 比较程序文件input.txt和文件output.txt,java,bash,file,diff,readline,Java,Bash,File,Diff,Readline,我有一个文件input.txt从命令行传递到Java中的数据结构。我的工作是对结构进行排序,并返回用于插入、查找和删除调用的布尔值。 input.txt是一个包含50000个调用的文件,output.txt是一个包含50000个预期布尔值的文件。每个测试都是一条新的测试线。我想使用一个命令来告诉我有多少个案例我失败了(如果有的话),哪些案例我失败了。我怎样才能做到这一点 编辑: 所以我被要求加入代码。没有真正的代码。我的程序运行正常,它从作为参数的input.txt文件中输出50000个布尔值

我有一个文件input.txt从命令行传递到Java中的数据结构。我的工作是对结构进行排序,并返回用于插入、查找和删除调用的布尔值。 input.txt是一个包含50000个调用的文件,output.txt是一个包含50000个预期布尔值的文件。每个测试都是一条新的测试线。我想使用一个命令来告诉我有多少个案例我失败了(如果有的话),哪些案例我失败了。我怎样才能做到这一点

编辑:

所以我被要求加入代码。没有真正的代码。我的程序运行正常,它从作为参数的input.txt文件中输出50000个布尔值

我想做的是快速比较我的输出和output.txt中给定的输出 大概是

diff javaFile output.txt
更新:对于任何一个偶然发现这个问题的人,我的教授向我展示了一种方法,使用重定向将打印的输出放入bash命令中的文件中。 格式如下:

java file.java args >fileouts.txt
之后,您可以对文件调用diff。

在Unix上:
paste--delimiters=,您所需的_输出| grep-iv'true,true'| grep-iv'false,false'| wc-l
将为您提供测试失败次数的计数

说明:如果文件
您的\u输出
所需的\u输出
每行都包含
,则
粘贴
将输出诸如
真、真
真、假等行,等。第一个值来自
您的\u输出
,第二个值来自
所需的\u输出
。接下来,两个
grep
s将消除对应于第一个和第二个值相同的通过测试用例的行(因为
-v
)。最后,
wc-l
将计算对应于失败测试用例的行数

更新:您可以通过使用此管道来概括这一点:
paste--delimiters=,您的|u输出所需的|u输出| grep-Ev'^(.*),\1$'| wc-l


它将多个
grep
s缩减为一个查找任何输出之间匹配的grep,而不仅仅是
true
false
-E
是使用
\1
所必需的,它引用了括号中正则表达式的第一部分:
(.*)
。当查找由
分隔的两个相同字符串时,
^
$
强制匹配从
^
开始到
$
结束的整行,

在没有看到任何代码/示例数据的情况下,如何回答这个问题?您尝试过的代码是什么?一个简单的方法是访问System.out.println并重定向标准输出
java…>myout.txt
你想让我共享一个50000项的布尔文件吗?你真的理解样本数据的含义吗?@user3466773最有用的数据是不平凡的;那不是借口。如果它是二进制的,您可以将它传递给
hextump
或类似的东西以获得可读的输出。(Java打印的是真是假,但谁知道)如果你把它与
Java结合起来粘贴--delimiters=,-desired_output |…
只要Java程序将true和false写入标准输出(除此之外没有其他内容,但这可能会被修改),您就可以一下子获得所有内容。@laune正是我对OP的评论,紧跟在您的后面:)好吧,我们知道我们的*nix;-)<代码>粘贴--分隔符=,a.txt b.txt | awk'/se,t | ue,f/{n++}END{print n;}'
;-)最多2个程序。