我将日志文件分散在各种日志文件中(基本上它们设置为旋转日志)。我需要根据日期和时间提取日志。 示例日志文件具有以下内容。
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循环的帮助才能完成此脚本。
答案 0 :(得分:1)
为什么不做呢
awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' server.log*
另外,
cat `cat logfilenames.txt`
将捕获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"'