寻找时
grep -aiH '^WARN\|^ERROR\|^FATAL' myLogFile.log | \
...
我写了
if (!line.startsWith("ERROR") || !line.startsWith("WARN")
|| !line.startsWith("FATAL")) {
...
但是如何考虑“i
”标志,使得比较案例无动于衷?
答案 0 :(得分:4)
首先使用此方法将行转换为upperCase字符串:
http://docs.oracle.com/javase/1.3/docs/api/java/lang/String.html#toUpperCase()
而不是!line.startsWith(...)
写!line.toUpperCase().startsWith(...)
。
答案 1 :(得分:1)
也可能想看看commons-lang StringUtils:
http://commons.apache.org/lang/api/org/apache/commons/lang3/StringUtils.html
例如!StringUtils.startsWithIgnoreCase(line, "ERROR")
这样做的好处也是无效的;如果line
为null,则返回false而不是抛出NullPointerException。
最后 - 您还可以尝试!line.matches("(?i)(WARN|ERROR|FATAL).*")