【发布时间】:2020-02-09 19:49:24
【问题描述】:
我的文本格式如下:
2020-05-02
apple
string
string
string
string
string
2020-05-03
pear
string
string
string
string
string
2020-05-03
apple
string
string
string
string
string
每个组都有7 lines = Date、Fruit 和 5 个字符串。
我想通过仅提供日期和水果来从文件中删除 7 行组。
所以如果选择'2020-05-03'和'pear'
这将删除:
2020-05-03
pear
string
string
string
string
string
从文件中得到:
2020-05-02
apple
string
string
string
string
string
2020-05-03
apple
string
string
string
string
string
该文件包含数千行,我需要一个命令,可能使用 sed 或 awk 来:
搜索日期
2020-05-03检查日期后的字符串是否为
pear删除这两行和后面的
5行
我知道我可以像sed s'/string//g' 这样使用 sed 删除,但是我不确定是否可以删除多行。
注意: 日期后跟水果从不重复两次 所以
2020-05-02
pear
只会在文件中出现一次
我怎样才能做到这一点?
【问题讨论】:
-
听起来像
2020-05-03\npear\n(?:.*\n){5} -
感谢@MonkeyZeus 我修复了它
-
sed s'/2020-05-03\npear\n(?:.*\n){5}//' 似乎不起作用,但不会抛出错误
-
我不是 sed 专家,但也许它不支持非捕获组,所以试试
2020-05-03\npear\n.*\n.*\n.*\n.*\n.*\n -
我认为问题是 \n ,它不匹配,例如: sed s'/2020-05-03\npear//' 不删除前两行