【发布时间】:2023-09-20 20:21:01
【问题描述】:
文件内容应该是这样的:
foo
foobar
bar
foo 或 foobar 可以单独存在。但是 bar 必须在 foo 之后并且没有 foo 就不能发生。所以任何没有 foo 的 bar,我想删除。
对于我的用例(问题),bar 总是出现在 foo 之前和 foo 之后。
bar
...
foo
foobar
bar
所以我使用grep 查找出现次数,并使用sed 删除第一次出现的bar(如果有多个bar)。
但我想知道,是否可以使用 sed 或其他工具来实际找到上一次出现的 foo 并保持计数。如果它后面没有自己的 foo,则删除该栏。就像下面的所有案例一样。
1.(删除第一个小节)
bar
...
foo
foobar
bar
2.(删除第 2 条,因为即使它前面有一个 foo,它已经计入第 1 条)
foo
foobar
bar
...
bar
3.(删除第 2 和第 4 小节)
foo
foobar
bar
...
bar
...
foo
bar
...
bar
【问题讨论】:
-
这里:
foo \n text \n bar \n bar你想同时删除还是保留第一个? -
没有。将保留第一个。 foo 和 bar 之间是否有任何文本都没有关系。但是如果 bar 存在而没有 foo,我想删除。