【发布时间】:2022-01-06 14:25:48
【问题描述】:
我需要从日志文件中提取变量“错误”的值。这是一个示例行:
WARN (Periodic Recovery) IJ000906: error=15 check server.log
我需要捕获“错误”的值。查看类似的答案,我想出了:
echo "WARN (Periodic Recovery) IJ000906: error=15 check server.log" | grep -P '\d+ (error=?)' -o
但是它不会产生任何价值。您能为这种情况推荐一个可行的解决方案吗?
【问题讨论】:
-
?是运算符,而不是通配符。您正在尝试匹配字符串error,后跟可选的=。 -
当
error之前的空格前面的字符是:,而不是数字时,您尝试匹配error之前的空格之前的数字。 -
为什么必须使用 POSIX shell?使用 bash 或 zsh,您将拥有更多可能性。