试图找到一种方法来 bash 编写我的结果脚本
trying to find a way to bash script my results
我有一个 testResultOuput.txt
,其中包含如下所示的行:
[2022.03.03-13.28.59:742][394]LogAutomationController: Error: Test Completed. **Result={Failed}** **Name={MyAwesomeTest}** Path={AutoTests.UnitTests}
[2022.03.03-13.28.59:742][394]LogAutomationController: BeginEvents: AutoTests.UnitTests
[2022.03.03-13.28.59:742][394]LogAutomationController: Error: Expected 'MyAwesomeTest' to be 0.000000, but it was -2147483648.000000 within tolerance 0.000100.
到目前为止,我发现这些行是:& grep Result={Failed} testResultOuput.txt
有人可以帮忙吗?
我想编写一个 shell 脚本来按结果搜索并仅打印这些行中的 Name={}
和 Result={}
您可以尝试 --only-matching
grep 选项,它将只输出匹配的部分:
-o, --only-matching
Print only the matched (non-empty) parts of a matching line,
with each such part on a separate output line.
例如:
grep --only-matching 'Result={[[:alpha:]]*} Name={[[:alpha:]]*}'
将输出您的示例:
$ grep --only-matching 'Result={[[:alpha:]]*} Name={[[:alpha:]]*}' foo
Result={Failed} Name={MyAwesomeTest}
$
编辑,遵循评论中的不同要求。如果 result
和 name
由未定义的字符序列分隔,并且 {...}
替换为 "..."
,例如:
result="Failed" [2022.03.03-13.28.59:742][394]LogAutomationController: Error: Test Completed. name="MyAwesomeTest"
我会使用 sed
而不是 grep
。像 :
sed -nE 's/(\bresult="[[:alpha:]]*").*(\bname="[[:alpha:]]*")/ /p'
这个怎么样:
$ grep -o '\<Result={[^}]*} Name={[^}]*}' testResultOutput.txt
Result={Failed} Name={MyAwesomeTest}
我有一个 testResultOuput.txt
,其中包含如下所示的行:
[2022.03.03-13.28.59:742][394]LogAutomationController: Error: Test Completed. **Result={Failed}** **Name={MyAwesomeTest}** Path={AutoTests.UnitTests}
[2022.03.03-13.28.59:742][394]LogAutomationController: BeginEvents: AutoTests.UnitTests
[2022.03.03-13.28.59:742][394]LogAutomationController: Error: Expected 'MyAwesomeTest' to be 0.000000, but it was -2147483648.000000 within tolerance 0.000100.
到目前为止,我发现这些行是:& grep Result={Failed} testResultOuput.txt
有人可以帮忙吗?
我想编写一个 shell 脚本来按结果搜索并仅打印这些行中的 Name={}
和 Result={}
您可以尝试 --only-matching
grep 选项,它将只输出匹配的部分:
-o, --only-matching
Print only the matched (non-empty) parts of a matching line,
with each such part on a separate output line.
例如:
grep --only-matching 'Result={[[:alpha:]]*} Name={[[:alpha:]]*}'
将输出您的示例:
$ grep --only-matching 'Result={[[:alpha:]]*} Name={[[:alpha:]]*}' foo
Result={Failed} Name={MyAwesomeTest}
$
编辑,遵循评论中的不同要求。如果 result
和 name
由未定义的字符序列分隔,并且 {...}
替换为 "..."
,例如:
result="Failed" [2022.03.03-13.28.59:742][394]LogAutomationController: Error: Test Completed. name="MyAwesomeTest"
我会使用 sed
而不是 grep
。像 :
sed -nE 's/(\bresult="[[:alpha:]]*").*(\bname="[[:alpha:]]*")/ /p'
这个怎么样:
$ grep -o '\<Result={[^}]*} Name={[^}]*}' testResultOutput.txt
Result={Failed} Name={MyAwesomeTest}