【问题标题】:sed extract data only between time rangesed 仅在时间范围内提取数据
【发布时间】:2020-10-06 00:45:25
【问题描述】:

我有一个包含以下条目的文件:

MySql-DataBase-2020-09-22_183748.zip
MySql-DataBase-2020-09-22_184023.zip
MySql-DataBase-2020-09-23_205331.zip
MySql-DataBase-2020-09-23_205606.zip
MySql-DataBase-2020-09-24_200123.zip
MySql-DataBase-2020-09-24_200358.zip
MySql-DataBase-2020-09-25_115839.zip
MySql-DataBase-2020-09-25_120115.zip
MySql-DataBase-2020-09-26_094608.zip
MySql-DataBase-2020-09-26_094843.zip
MySql-DataBase-2020-09-27_122523.zip
MySql-DataBase-2020-09-27_122758.zip
MySql-DataBase-2020-10-01_230024.zip
MySql-DataBase-2020-10-01_230300.zip
MySql-DataBase-2020-10-02_120944.zip
MySql-DataBase-2020-10-02_121219.zip
MySql-DataBase-2020-10-03_151414.zip
MySql-DataBase-2020-10-03_151649.zip
MySql-DataBase-2020-10-04_211059.zip
MySql-DataBase-2020-10-04_211334.zip
MySql-DataBase-2020-10-05_064049.zip
MySql-DataBase-2020-10-05_064324.zip

我想提取今天和 3 天前之间的文件。

对于今天的日期2020/10/05,3 天前是2020/10/02.

输出必须是:

MySql-DataBase-2020-10-02_120944.zip
MySql-DataBase-2020-10-02_121219.zip
MySql-DataBase-2020-10-03_151414.zip
MySql-DataBase-2020-10-03_151649.zip
MySql-DataBase-2020-10-04_211059.zip
MySql-DataBase-2020-10-04_211334.zip
MySql-DataBase-2020-10-05_064049.zip

我尝试使用此命令获取 3 天的回溯日期

date --date='-3 day' '+%Y/%m/%d'

然后使用这些命令获取日期范围之间的输出

sed -n '/3day=date --date='-3 day' '+%Y/%m/%d'/,/date/p' s.txt

我收到此错误:

sed: -e expression #1, char 20: unterminated address regex

请帮我解决这个问题。我将在 bash 脚本中使用它。

【问题讨论】:

  • 你能解释一下为什么输出应该在 2020-10-05_064049 而不是 2020-10-05_064324 结束,因为最后一行也是今天的日期?

标签: bash sed


【解决方案1】:

使用进程替换来生成日期并将其提供给 grep 作为要搜索的模式:

grep -F -f <(for d in {0..3}; do date -d "$d days ago" "+%F"; done) file

【讨论】:

    【解决方案2】:
    sed -n "/$(date --date='-3 day' '+%Y-%m-%d')/,/$(date +'%y-%m-%d')/p"
    MySql-DataBase-2020-10-02_120944.zip
    MySql-DataBase-2020-10-02_121219.zip
    MySql-DataBase-2020-10-03_151414.zip
    MySql-DataBase-2020-10-03_151649.zip
    MySql-DataBase-2020-10-04_211059.zip
    MySql-DataBase-2020-10-04_211334.zip
    MySql-DataBase-2020-10-05_064049.zip
    

    注意,在最外层使用双引号。另外,请注意两个边界的日期格式相同。

    【讨论】:

      猜你喜欢
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多