我有一个包含以下数据的日志文件:
Customer=100000015 | AP ID=100000687 | StepID=N6MAAPtCzVYKFKVKMMQ | OA=107 | Activity=NegotiateProductConfigurationSyncImplAug | *** Starting Rule Debug Messages March 11, 2016 6:47:23 PM IST ***
我知道StepID但不知道OA和活动名称。
我想在grep上做类似的事情来获取此行之后的所有内容。
就像我将传递StepID和“*** Starting Rule Debug Messages”以匹配该行。
答案 0 :(得分:0)
这可能是一种方法:
e.g。
final String requiredStepId = "N6MAAPtCzVYKFKVKMMQ";
final List<String> allLines = Files.readAllLines(Paths.get("/var/log/tool/output.log"), StandardCharsets.UTF_8);
final List<String> resultLines = new LinkedList<>();
boolean match = false;
for (final String line : allLines) {
if (line.contains("StepID=" + requiredStepId)) {
match = true;
}
if (match) {
resultLines.add(line);
}
}
答案 1 :(得分:0)
您可以使用:
匹配后显示N行:
-A是在匹配后打印指定N行的选项,如下所示。
语法: grep -A&lt; N> “string”FILENAME
以下示例打印匹配的行以及后面的3行。
$ grep -A 3 -i“example”demo_text
价:http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/