awk - 使用 sed 或 awk 删除直到正则表达式的行
问题描述
我想使用 sed 或 gawk/awk 命令来查找正则表达式:
TRAFFIC
并将其与以下 unix 命令或类似命令结合使用,使 sysdate 减去一天:
date "--date=${dataset_date} -${date_diff} 1 day" +%d%b%Y
然后删除 regexp 和 sysdate 之间的所有行减去一天。
文件输入示例:
TYPE = REGIONAL (keep)
TRAFFIC AND LOGISTICS (keep)
(delete)
DATE (delete)
01AUG18 (delete)
TIME TRA NDFV (delete)
00:00-00:15 0.00 0 (delete)
00:15-00:30 0.00 0 (delete)
00:30-00:45 0.00 1 (delete)
DATE (delete)
02AUG18 (keep - sysdate minus one day)
TIME TRA NDFV (keep)
00:00-00:15 0.00 2 (keep)
00:15-00:30 0.00 0 (keep)
00:30-00:45 0.00 0 (keep)
00:45-01:00 0.00 0 (keep)
文件输出示例:
TYPE = REGIONAL
TRAFFIC AND LOGISTICS
02AUG18
TIME TRA NDFV
00:00-00:15 0.00 2
00:15-00:30 0.00 0
00:30-00:45 0.00 0
00:45-01:00 0.00 0
在这种情况下02AUG18
,将是 sysdate 减去一天。通常,regexp 和 sysdate 之间会有更多的行要删除。是否可以组合一个命令,例如:
sed '/TRAFFIC/,/ [sysdate minus one day] /d'
解决方案
试试 awk:
d=$( date -d yesterday "+%d%b%y" | tr '[:lower:]' '[:upper:]' )
awk -v date="$d" '$1 == date {del = 0}; !del; /TRAFFIC/ {del = 1}'
推荐阅读
- python - 逆动力学控制器 Drake
- javascript - 使用 setInterval 调用一个 react 组件函数
- ubuntu - 在 C 程序中使用 Apache APR 库的问题
- java - 带有可选参数的Java接口两种方法
- forms - 数据库的数据应该在哪里转换?
- java - config.ConfigurationException:找不到 cfg.xml 资源 [hibernate.cfg.xml]
- powershell - 将 PSVariable 对象添加到数组
- javascript - 为什么我的 IF 语句在 JavaScript 中不起作用?
- javascript - 如何防止在 IE 中输入数字时出现逗号
- angular - 如何将子类的指令注入组件