如何使用ed中的模式使用相对行号

时间:2011-09-15 01:12:45

标签: linux command-line text-editor ed

在尝试使用ed来删除特定模式周围的线条时,我一直在驾驶我的自我。

我想要做的是匹配一个模式,然后删除它周围的线条。

我尝试了几种变体

ed test.txt <<<< $'/pattern/-1,+1d\nwq'
ed test.txt <<<< $'(/pattern/-1,+1)d\nwq'
ed test.txt <<<< $'/pattern/-,+1d\nwq'
ed test.txt <<<< $'(/pattern/-,+1)d\nwq'
ed test.txt <<<< $'/pattern/-,+d\nwq'
ed test.txt <<<< $'(/pattern/-,+)d\nwq'

其中没有一个有效。怎么做?

2 个答案:

答案 0 :(得分:2)

在处理第二个地址之前,使用分号VerifyOTPActivity将设置当前行;。 这使得第二个地址相对于第一个地址,这几乎是你想要的:

.

因为第二个地址是相对于第一个地址而不是相对于模式,所以我们必须使用+2来解决模式之前和之后的行。

(请注意,/pattern/-;+2d /pattern/-

的简写

答案 1 :(得分:1)

我经过多次试验和错误后想出来了,虽然我似乎无法找到任何可以告诉我的文件。似乎每个行引用必须是一个单独的模式匹配引用,因此诀窍是给模式两次。

 ed test.txt <<<< $'/pattern/-,/pattern/+d\nwq'