我需要使用 shell 脚本从一个巨大的日志文件中查找比当前日期早 1 个月的条目。日志条目日期位于每行的第三个字段中。 这是我的示例日志文件:
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
谢谢!
最佳答案
这是一个解决方案,使用 grep
来匹配文件中的某些行,并使用 date
来操作日期。
Linux版本
grep -E "$(date --date='-1 month' '+%m')/[0-9]+/$(date --date='-1 month' +'%Y') <your_file>"
date --date='-1month' '+%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 个月并打印年份
关于linux - 使用 Shell 脚本提取 1 个月前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47409405/