我正在尝试在日志文件中捕获确切的单词:
/Emergency|Critical|Error|BEA-000331/
问题是,例如我必须Error
捕获,但这也是捕获ErrorUnable
。我只想在空间看到它时捕捉它。我也在寻找,BEA-000331
但所有东西都BEA
被捕获了。
我正在尝试在日志文件中捕获确切的单词:
/Emergency|Critical|Error|BEA-000331/
问题是,例如我必须Error
捕获,但这也是捕获ErrorUnable
。我只想在空间看到它时捕捉它。我也在寻找,BEA-000331
但所有东西都BEA
被捕获了。
如果您在 perl/ruby 中,请添加单词边界标记 \b 以仅匹配单词边界。此外,如果 BEA-000331 必须作为一个单元匹配,请尝试将其放在括号中:-
/\b(Emergency|Critical|Error|(BEA-000331))\b/
使用\b
:
匹配单词字符(由 \w 匹配的任何内容)和非单词字符(由 [^\w] 或 \W 匹配的任何内容)之间的位置以及字符串的开头和/或结尾(如果第一个)和/或字符串中的最后一个字符是单词字符。
'\bEmergency\b|\bCritical\b|\bError\b|\bBEA-000331\b'
根据您使用的工具,您可以执行以下操作:
grep -Ew 'Emergency|Critical|Error|BEA-000331' log
该-w
选项强制模式仅匹配整个单词。