【发布时间】:2017-07-11 15:06:12
【问题描述】:
所以我有一个日志文件,其中提供了有关锁定和解锁节点的详细信息。每个节点的时间和日期 18:02:21 和 ID "ieatrcxb4498-1"。
150: 2017-06-14 18:02:21 INFO monitorinfo : Info: Lock VCS on node "ieatrcxb4498-1"
264: 2017-06-14 18:02:21 INFO monitorinfo : Info: Unlock VCS on node "ieatrcxb4498-1"
268: 2017-06-14 18:02:21 INFO monitorinfo : Info: Lock VCS on node "ieatrcxb4496-1"
382: 2017-06-14 18:02:21 INFO monitorinfo : Info: Unlock VCS on node "ieatrcxb4496-1"
407: 2017-06-14 18:02:21 INFO monitorinfo : Info: Lock VCS on node "ieatrcxb4500-1"
473: 2017-06-14 18:02:21 INFO monitorinfo : Info: Unlock VCS on node "ieatrcxb4500-1"
我想要做的是通过我的程序运行日志文件,删除不需要的数据并将输出格式化为看起来像,或类似的东西。
Node Lock Unlock
ieatrcxb4498-1 18:02:21
ieatrcxb4498-1 18:02:21
ieatrcxb4500-1 18:02:21
ieatrcxb4500-1 18:02:21
我有一个基本程序,我找到了here 并进行了调整,但我正在努力让它正常工作。
public class Main {
private static class Record
{
public String node;
public Date lock;
public Date unlock;
@Override
public String toString() {
return "Record{" +
", node='" + node + '\'' +
", lock='" + lock + '\'' +
", unlock='" + unlock + '\'' +
'}';
}
}
public static void main(String[] args) throws Exception
{
Scanner s = new Scanner(new FileReader(new File("input.txt")));
Record currentRecord = null;
ArrayList<Record> list = new ArrayList<Record>();
while (s.hasNextLine()) {
String line = s.nextLine();
if ("SHOW_PLAN BEGIN".equals(line)) {
currentRecord = new Record();
} else if ("SHOW_PLAN END".equals(line)) {
list.add(currentRecord);
currentRecord = null;
} else if (currentRecord.lock == null) {
currentRecord.lock = new SimpleDateFormat(
"HH:mm:ss").parse(line);
}else if(currentRecord.unlock == null){
currentRecord.unlock = new SimpleDateFormat(
"HH:mm:ss").parse(line);
}
else if (line.startsWith("traceroute to ")) {
Pattern p = Pattern.compile(
"monitor ([^ ]+) [^,]+, ([^ ]+) hops max, ([^ ]+) byte packets");
Matcher m = p.matcher(line);
if (m.matches()) {
currentRecord.node = m.group(1);
// currentRecord.lock = m.
// currentRecord.unlock = m.group(3);
}
}
}
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i).toString());
}
}
【问题讨论】:
标签: java regex csv pattern-matching