再会,
我想知道当发现这种模式时如何删除连续行:/^pt [a-z]\npy [0-9][0-9][0-9][0-9]\n//
预期输入
pt a
py 01234
pt b
cd abc
py 5678
预期输出
pt b
cd abc
py 5678
预先非常感谢您提供任何线索。
答案1
这应该有效:
sed '/^pt [a-z]/{N;/py [0-9][0-9][0-9][0-9]/d}' your_file
扩展
- 如果当前行匹配,
/^pt [a-z]/
我们就执行大括号之间的内容。 N
将下一行追加到活动缓冲区。- 如果活动缓冲区现在匹配
/py [0-9][0-9][0-9][0-9]/
,我们删除(即不打印)活动缓冲区的内容。这是通过 实现的d
。
答案2
通过 Perl,
$ perl -00pe 's/^pt [a-z]\npy [0-9]{5}\n//' file
pt b
cd abc
py 5678