【发布时间】:2019-10-15 00:09:22
【问题描述】:
我需要删除所需文本之前的某些行数,但前提是搜索字符串之前和之后的行为空。
例如(行号、内容)
1
2
3 Hello
4
5 yellow
在这种情况下,如果包含 Hello 的行之前和之后的行是空的(第 2 行和第 4 行),我必须删除从 3 到 1 的行。
我可以使用 tac 和 sed 命令删除从 3 到 1 的行,但是我很难设置 if 条件。
tac file1|sed -e '/Hello/,+3d'|tac
【问题讨论】:
-
一定要使用
sed吗?使用awk会更容易做到这一点。 -
你有
GNU sed 4.4吗?新选项-z可以提供帮助。 -
@WalterA
-z对此有何帮助? -
sed '1 N;N;N;N;{s/\n\nHello\n\n/\n/}' file可能有用(如果你有 GNU sed)。 -
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)