我有一个文件input.txt从命令行传递给Java中的数据结构。我的工作是保持结构排序并返回插入,查找和删除调用的布尔值。 input.txt是一个包含50,000个调用的文件,而output.txt是一个包含50,000个预期布尔值的文件。每个测试都是新的一行。我想用一个命令告诉我有多少箱子失败(如果有的话)以及哪些失败了。我怎么能做到这一点?
编辑:
所以我被要求包含代码。没有真正的代码。我的程序有效,输出50,000个布尔值,来自input.txt文件,它作为参数。
我想要做的是快速将输出与output.txt中的给定输出进行比较 像
这样的东西diff javaFile output.txt
更新:对于任何偶然发现这个问题的人,我的教授向我展示了一种使用重定向将打印输出转换为bash命令文件的方法。 格式如下:
java file.java args >fileouts.txt
之后你可以在文件上调用diff。
答案 0 :(得分:3)
在Unix上:paste --delimiters=, your_output desired_output | grep -iv 'true,true' | grep -iv 'false,false' | wc -l
将为您提供失败的测试次数。
说明:如果文件your_output
和desired_output
在每一行都包含true
或false
,则会输出paste
true,true
,true,false
等行,your_output
的第一个值和desired_output
的第二个值。接下来,两个grep
将消除对应于具有相同第一和第二值的传递测试用例的行(因为-v
)。最后,wc -l
将计算与失败的测试用例相对应的行。
更新:您可以使用此管道来概括:paste --delimiters=, your_output desired_output | grep -Ev '^(.*),\1$' | wc -l
它将多个grep
减少到一个查找任何输出(不仅仅是true
或false
)之间匹配的值。使用-E
\1
是必要的,(.*)
引用括号中正则表达式的第一部分:^
。在查找由$
分隔的两个相同字符串时,^
和$
会强制从,
开始到结束{{1}}的整行。