我有一个要解析的测试结果日志,它基本上只是key=value
顺序行上的一堆对,最后用 a 分隔//
。
除了输出文件,一切看起来都很棒。在普通记事本中,它看起来不错。在 Notepad++ 中,它有一堆额外的行。从输出文件查看符号时,原始文件行CR
以CRLF
.
它的输入文件在两者中看起来都一样,并且所有行都以CRLF
. 我希望它的输出文件在两者中看起来都一样。
对于所需的行为,我需要解决什么问题?我尝试添加一个 gsub 以去除第一次替换后空白的行,contents = contents.gsub(/^\n/m, "")
但这似乎并没有改变输出。
输入文件,test_results.log:
// Test_App=moduleTwo_test.exe Test_Function=genericTestOne() Test_Iterations=5 Test_Health=100 % Test_Result=PASSED Test_Path=C:\rb-tests\moduleTwo_test.exe // Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe // Test_App=subModuleOne_test.exe Test_Function=genericTestOne() Test_Iterations=5 Test_Health=100 % Test_Result=PASSED Test_Path=C:\rb-tests\subModuleOne_test.exe //
Ruby 脚本,find_fails.rb
this_dir = File.dirname(ARGV[0])
this_file = File.open(ARGV[0], "rb")
contents = this_file.read
contents = contents.gsub(/\/\/[ ](?>(?:(?!\/\/).))*?PASSED.*?(?=\/\/)/m, "")
contents = contents.gsub(/^\n/m, "")
File.write(this_dir + "\\fails.log", contents)
输出文件,fails.log,如 Notepad++ 中所示
// Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe //
failed.log 的所需输出文件/格式,以及它在普通记事本中的样子:
// Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe //