使用Shell脚本提取1个月的旧数据

时间:2017-11-21 09:20:31

标签: linux shell awk

我需要使用shell脚本从一个比当前日期早1个月的巨大日志文件中找到条目。日志输入日期位于每行的第3个字段中。 这是我的示例日志文件:

0114374510,OK,10/23/2017 9:22:50 AM,0016692200,OK
0112364510,OK,10/23/2017 9:22:50 AM,0016692200,OK
0112364510,TX,10/21/2017 9:10:00 AM,0016692200,OK
0115364510,TX,10/21/2017 10:52:00 AM,0016692200,OK
0112368979,OK,7/29/2016 10:25:00 AM,0000718374,OK
0113368979,OK,7/29/2016 12:50:00 PM,0000718374,OK
0112368979,TX,9/16/2015 10:57:00 AM,0033545820,OK

谢谢!

1 个答案:

答案 0 :(得分:0)

以下是一种解决方案,使用grep匹配文件中的某些行,date来操作日期。

Linux版

grep -E "$(date --date='-1 month' '+%m')/[0-9]+/$(date --date='-1 month' +'%Y') <your_file>"
  • date --date='-1 month' '+%m' - 将1个月减去当前日期并打印
  • [0-9]+ - 正则表达式匹配任意数字(在我们的情况下为任何一天)
  • $(date --date='-1 month' +'%Y') - 将1个月减去当前日期并打印

macOS版本

grep -E "$(date -v -1m '+%m')/[0-9]+/$(date -v -1m +'%Y') <your_file>"
  • date -v -1m '+%m' - 将1个月减去当前日期并打印
  • [0-9]+ - 正则表达式匹配任意数字(在我们的情况下为任何一天)
  • date -v -1m +'%Y' - 将1个月减去当前日期并打印