sed删除以模式开头的第一个连续行

时间:2016-10-27 18:05:34

标签: sed

我有一个HTML文件,其中一些行以<br>开头。如果连续有两个,我想删除第一个。看起来这应该有用......

sed '/^<br>/{N;/^<br>/ s/^.*\n//}'

......但事实并非如此。

修改

输入:

<br>Here's a line I don't want.
<br>Here's a line I do want.
<a href="http://google.com">Google</a>

输出:

<br>Here's a line I do want.
<a href="http://google.com">Google</a>

编辑2:

我把问题缩小到一半时间工作的命令。如果第1行和第2行以<br>开头,则第1行被正确删除,但脚本会移至第3行和第4行,而不先检查第2行和第3行。

1 个答案:

答案 0 :(得分:1)

试试这个:

sed '/^<br>/N;{/\n<br>/D;}' file

找到^<br>后,N会在模式空间中添加下一行。如果下一行以<br>开头,则D会删除模式空间的第一部分(即以br开头的第一行)。