通过终端中的正则表达式查找文件中是否存在子字符串
Find if a substring exists in file through regex in terminal
我有一个构建日志文件。我需要确定构建是否失败。如果通过,日志将只有“构建已退出,错误代码为 0”。现在我在日志文件中寻找的是类似于此“Build exited with errorcode *”的正则表达式,其中 * 可以是除零以外的任何 return 值。如果找到子字符串,则构建失败
例如:
- 如果发现“构建已退出,错误代码为 0”,则构建已通过。
- 如果“Build exited with errorcode 0”、“Build exited with errorcode 1”,则构建失败
它确实可以用 python 或其他语言完成,但我希望通过正则表达式在终端上完成。
文件内容:
mm,bn,hello,ssdenl.
sdfsdf,dfdf,dfdfe,ggg.
sdfd,gfgf
dfdfgfgdfgsdfgsdfg
dfgfdg,sdfsdfdhello.sdfasdfas/
sdfsdfdfgdfgdsfhellosdfasdfasdf
sdfasdfdfgffghjdkfjglfdg
寻找“你好”字段
^(?!.*hello).*$
if grep -Eq 'Build exited with errorcode ([^0]|[^[:space:]]{2,})' logfile; then
echo build failed
else
echo build passed
fi
这将打印 build failed
,如果日志文件包含上述字符串的任何实例,其中 errorcode
之后的单词不是单个零。如果你想要 build failed
除了一个 或更多 零之外的任何东西,你可以改为使用:grep -q 'Build exited with errorcode [^[:space:]]*[^0][^[:space:]]*'
.
请注意,在任何一种情况下,即使是日志文件中的句点 (Build exited with errorcode 0.
) 也会打印 'failed'.
换句话说,此字符串的 all 个实例对于 passed
必须是 Build exited with errorcode 0
(或者对于第二个示例最多为多个零,例如 000
或 0
).
我有一个构建日志文件。我需要确定构建是否失败。如果通过,日志将只有“构建已退出,错误代码为 0”。现在我在日志文件中寻找的是类似于此“Build exited with errorcode *”的正则表达式,其中 * 可以是除零以外的任何 return 值。如果找到子字符串,则构建失败
例如:
- 如果发现“构建已退出,错误代码为 0”,则构建已通过。
- 如果“Build exited with errorcode 0”、“Build exited with errorcode 1”,则构建失败
它确实可以用 python 或其他语言完成,但我希望通过正则表达式在终端上完成。
文件内容:
mm,bn,hello,ssdenl.
sdfsdf,dfdf,dfdfe,ggg.
sdfd,gfgf
dfdfgfgdfgsdfgsdfg
dfgfdg,sdfsdfdhello.sdfasdfas/
sdfsdfdfgdfgdsfhellosdfasdfasdf
sdfasdfdfgffghjdkfjglfdg
寻找“你好”字段
^(?!.*hello).*$
if grep -Eq 'Build exited with errorcode ([^0]|[^[:space:]]{2,})' logfile; then
echo build failed
else
echo build passed
fi
这将打印 build failed
,如果日志文件包含上述字符串的任何实例,其中 errorcode
之后的单词不是单个零。如果你想要 build failed
除了一个 或更多 零之外的任何东西,你可以改为使用:grep -q 'Build exited with errorcode [^[:space:]]*[^0][^[:space:]]*'
.
请注意,在任何一种情况下,即使是日志文件中的句点 (Build exited with errorcode 0.
) 也会打印 'failed'.
换句话说,此字符串的 all 个实例对于 passed
必须是 Build exited with errorcode 0
(或者对于第二个示例最多为多个零,例如 000
或 0
).