Regex Linux,Grep到不带字符的数学字符串
我正在尝试安装。 linux服务器上有一个构建过程,它将日志放入文件中 处理完所有文件后,会有一个命令,检查文本文件是否包含ORA-字符串 问题是,在log4plsql代码中实际上包含一个ORA-: 例如,在此日志中:Regex Linux,Grep到不带字符的数学字符串,regex,linux,grep,Regex,Linux,Grep,我正在尝试安装。 linux服务器上有一个构建过程,它将日志放入文件中 处理完所有文件后,会有一个命令,检查文本文件是否包含ORA-字符串 问题是,在log4plsql代码中实际上包含一个ORA-: 例如,在此日志中: BEGIN checkAndInitCTX(pCTX); LLTEXT := 'SQLCODE:'||SQLCODE ||' SQLERRM:'||SQLERRM || CHR(10) || 'Error back trac
BEGIN
checkAndInitCTX(pCTX);
LLTEXT := 'SQLCODE:'||SQLCODE ||' SQLERRM:'||SQLERRM || CHR(10) ||
'Error back trace:' || CHR(10) ||
replace(dbms_utility.format_error_backtrace, 'ORA-06512: ', '');
log(pLEVEL => PLOGPARAM.DEFAULT_FT_ERR_BTRACE_LEVEL, pCTX => pCTX, pTEXT => LLTEXT );
END full_error_backtrace;
ORA-00955: name is already being used by existing object
我的grep找不到任何ORA
有人有主意了吗?尝试使用-p作为perl兼容的正则表达式
grep-p“^ORA-\'ORA”log问题是,当您将
[^']
添加到正则表达式grep
时,需要在ORA-
的左侧有一个字符,但是-由于在发生真正错误的情况下,模式可能位于行的开头-它可能无法找到一个字符(正如上面的例子所示)
一些正则表达式大师可能有一个更优雅的解决方案,但以下几点对我很有用:
grep -E "(^|[^'])ORA-" output.log
这将匹配以ORA-
开头的行,或包含前面有除“
以外的任何字符的模式ORA-
我的grep
版本:
$ grep --version
grep (GNU grep) 2.27
如果我读得正确,那么假设所有错误都有一行以“ORA”开头,我们可以
grep“^ORA-”
?该^
匹配该行的开头。
grep -E "(^|[^'])ORA-" output.log
$ grep --version
grep (GNU grep) 2.27