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