我正在尝试在日志文件中搜索未完成的已记录活动。例如,我记录了“ID 1234 的开始活动...”,如果成功,下一行将是“活动 1234 已完成”。
我正在尝试获取“开始...”行,这些行后面没有跟相应的“已完成”行。
示例日志文件
Starting activity for ID 1234
ID 1234 completed successfully
Starting activity for ID 3423
ID 3423 completed successfully
Starting activity for ID 9876
ID 9876 completed successfully
Starting activity for ID 99889
ID 99889 completed successfully
Starting activity for ID 10011
ID 10011 completed successfully
Starting activity for ID 33367
Starting activity for ID 936819
ID 936819 completed successfully
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我会寻找输出:
Starting activity for ID 33367
Run Code Online (Sandbox Code Playgroud)
...因为它后面没有“完成”的行。
我试过用grepand来做这件事awk,但没有取得太大的成功。我假设可以使用其中一种工具来完成,但我的grep和awk排骨并不先进。
寻找一种快速可靠的grep或awk模式来提供我需要的结果。
Tho*_*hor 10
这是一个awk替代方案:
awk '
/^Starting/ { I[$5] = $0 }
/^ID/ { delete I[$2] }
END { for (key in I) print I[key] }
' infile
Run Code Online (Sandbox Code Playgroud)
输出:
awk '
/^Starting/ { I[$5] = $0 }
/^ID/ { delete I[$2] }
END { for (key in I) print I[key] }
' infile
Run Code Online (Sandbox Code Playgroud)
该I关联数组跟踪的IDS已经看到的。