【发布时间】:2022-01-15 21:38:14
【问题描述】:
我正在尝试查找操作的总持续时间。 在日志中,我想检索包含元素(如文件)的特定对象名称(比如说文件夹)列表的删除操作的每一行。 日志会报告每个删除操作:为了测量特定对象的删除持续时间,我可以将第一个删除的时间戳减去最后一个删除的时间戳。
我找到了一种执行此操作的方法,但我想听听您的建议,以使其外观和性能更好。
for name in $(cat List_to_Del) ; do
grep $name access_log |
grep "method=DELETE" |
awk 'NR==1 ; END{print}' |
awk -F, '{print $3}' |
awk -F= '{print $2}' |
paste -sd- - |
bc |
awk -F- '{print $NF}'
done
For 循环。我正在查看已删除名称的列表并在我的日志中搜索它们。 我按名称检索 DELETE 操作的完整列表。 然后(第一个 awk 命令)我只保留每个名称的第一行和最后一行。 然后我只检索字段编号 3 中的字段编号 2。 然后我使用粘贴命令将两个值写入一行,并以符号“-”作为分隔符,将其推送到 bc 并删除减号。
这是一个日志示例:
16/Nov/2021:17:07:42,100,ts=1637078862.235,method=DELETE,name1,,,
16/Nov/2021:17:07:42,100,ts=1637078862.236,method=PUT,name4,,,
16/Nov/2021:17:07:42,100,ts=1637078862.243,method=DELETE,name1,,,
16/Nov/2021:17:07:42,100,ts=1637078862.254,method=DELETE,name2,,,
16/Nov/2021:17:07:42,100,ts=1637078862.256,method=DELETE,name1,,,
16/Nov/2021:17:07:42,100,ts=1637078862.260,method=DELETE,name2,,,
【问题讨论】:
-
请参阅stackoverflow.com/help/formatting 了解如何格式化您的代码、输入和输出块,然后查看edit 修复它们的问题(将它们全部格式化为“代码块”)。另外,不要将所有代码都塞到一行中,因为这只会让我们更难阅读。
-
我刚刚为你做了,所以你可以在下一个问题中看到如何做。
-
请edit您的问题提供您提供的示例输入的预期输出。
标签: awk