2

我的日志文件分布在各种日志文件上(基本上它们被设置为轮换日志)。我需要根据日期和时间提取日志。示例日志文件具有以下内容。

2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <INFO   > Loaded properties
2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <INFO   > Initialized logging
2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <CONFIG > Log levels = 

我已经尝试过使用下面的 awk 一个班轮......

awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' server.log   server.log.1

这打印出需要什么...

但想使用 for 循环来运行使用此在 txt 文件中提取的日志文件名列表

find server.log* -exec ls -lth {} \; | awk '{print $9}' > logfilenames.txt

我需要使用 logfilenames 内容(这具有该目录中日志文件的完整路径)作为 for 循环中的输入,以搜索从开始日期时间到结束日期时间的正确日志文件名并将其输出到不同的文件。

需要 for 循环的帮助来完成此脚本。

4

1 回答 1

1

为什么不做

awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' server.log*

还,

cat `cat logfilenames.txt` 

将 cat 包含在 logfilenames.txt 中的所有文件。您可以在输出上运行 awk。

您还可以使用 xargs 并将 grep 的输出重定向到 awk。因此,要使用您提供的两个命令,您可以执行以下操作:

find server.log* -exec ls -lth {} \; | awk '{print $9}' | xargs awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"'
于 2012-12-20T15:43:44.863 回答