我想在这里做的是,我有每天都附加的日志文件。我想从文件中删除超过6个月的日志条目。我可以删除6个月的入口,但入口超过6个月,这是我无法找到解决方案。有人能让我接受这种逻辑并给出一些暗示吗?
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
我想在这里做的是,它还应检查超过6个月的#!/bin/bash
pattern=$(date -d "6 month ago" +%Y%m%d)
sed "/$pattern/d" /root/new/Logfile.log >> outputfile
条目,其中第4列包含日期。
示例Logfile.log模式如下:
Logfile.log
答案 0 :(得分:0)
请注意,您的问题和答案都不具体bash
。您询问的是策略,示例代码的内容为sed
。
你可能想要使用比sed
更灵活的东西。我会用awk
。而且你运气不好,因为你使用一个合理的日期格式允许基本的数字或字符串比较来确定顺序!所以,通过您的示例输入:
$ awk -v d="20180101" '$4>=d' file
ERROR 8245001 000 20180515 171012 Patch output error in output
ERROR 8245001 000 20180515 171119 Patch output error in output
ERROR 8245001 000 20180515 171119 Patch output error in output
或者如果您愿意:
$ awk -v d="20180101" '$4>=d' c > c,$$ && mv c,$$ c
答案 1 :(得分:0)
awk
/ gawk
在线人员:
gawk -v dt="$(date -d "6 month ago" +%Y%m%d)" '$4+0>=dt+0' /root/new/Logfile.log >> outputfile