在尝试使用 ed
删除特定模式周围的线条时,我一直在逼自己发疯
TS.
我想做的是匹配一个模式,然后删除它周围的行。
我尝试了几种变体
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'
这些都不起作用。它是怎么做到的?
最佳答案
使用分号 ;
,将在处理第二个地址之前设置当前行 .
。
这使得第二个地址相对于第一个地址,这几乎就是您想要的:
/pattern/-;+2d
因为第二个地址是相对于第一个地址的,而不是相对于模式的,所以我们必须使用 +2 来寻址模式之前和之后的行。
(注意 /pattern/-
是 /pattern/-1
的简写)
关于linux - 如何在 ed 中使用带有模式的相对行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424831/