比较程序文件 input.txt 与文件 output.txt
Compare program file input.txt with file output.txt
我有一个文件 input.txt 从命令行传递到 Java 中的数据结构。我的工作是保持结构排序和 return 插入、查找和删除调用的布尔值。
input.txt 是一个包含 50,000 个调用的文件,output.txt 是一个包含 50,000 个预期布尔值的文件。每个测试都是一个新行。我想用一个命令来告诉我有多少个案例我失败了(如果有的话)以及哪些我失败了。我怎样才能做到这一点?
编辑:
所以我被要求包含代码。没有真正的代码。我的程序运行正常,它从 input.txt 文件中输出 50,000 个布尔值作为参数。
我想做的是快速将我的输出与 output.txt 中的给定输出进行比较
所以像
diff javaFile output.txt
更新:对于任何偶然发现这个问题的人,我的教授向我展示了一种使用重定向在 bash 命令中将打印输出放入文件的方法。
格式如下:
java file.java args >fileouts.txt
之后您可以对文件调用 diff。
在 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 '^(.*),$' | wc -l
它将多个 grep
减少到一个寻找任何输出之间的匹配而不仅仅是 true
或 false
。 -E
是使用 </code> 所必需的,它指的是括号中正则表达式的第一部分:<code>(.*)
。 ^
和 $
在查找由 ,
分隔的两个相同字符串时强制匹配从开头 ^
到结尾 $
的整行。
我有一个文件 input.txt 从命令行传递到 Java 中的数据结构。我的工作是保持结构排序和 return 插入、查找和删除调用的布尔值。 input.txt 是一个包含 50,000 个调用的文件,output.txt 是一个包含 50,000 个预期布尔值的文件。每个测试都是一个新行。我想用一个命令来告诉我有多少个案例我失败了(如果有的话)以及哪些我失败了。我怎样才能做到这一点?
编辑:
所以我被要求包含代码。没有真正的代码。我的程序运行正常,它从 input.txt 文件中输出 50,000 个布尔值作为参数。
我想做的是快速将我的输出与 output.txt 中的给定输出进行比较 所以像
diff javaFile output.txt
更新:对于任何偶然发现这个问题的人,我的教授向我展示了一种使用重定向在 bash 命令中将打印输出放入文件的方法。 格式如下:
java file.java args >fileouts.txt
之后您可以对文件调用 diff。
在 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 '^(.*),$' | wc -l
它将多个 grep
减少到一个寻找任何输出之间的匹配而不仅仅是 true
或 false
。 -E
是使用 </code> 所必需的,它指的是括号中正则表达式的第一部分:<code>(.*)
。 ^
和 $
在查找由 ,
分隔的两个相同字符串时强制匹配从开头 ^
到结尾 $
的整行。