我有一个正在编辑的文本文件(在我的例子中是一个JMeter XML),我使用ed来查找标记XML部分的第一行和最后一行的两行。
如何删除两次搜索匹配之间的行?
示例文件:
1 <hashTree>
2 <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
3 <stringProp name="ConstantTimer.delay">300</stringProp>
4 </ConstantTimer>
6 </hashTree>
我想删除包含的第2-4行。
答案 0 :(得分:2)
如果您想要完成所有这些操作,可以使用g
命令查找开始,然后使用+
从下一行开始,然后搜索结束标记,并使用-
向后移动,然后删除生成的内容:
g/<hashTree>/+,/<\/hashTree>/-d
请注意,这会假设每个<hashTree>
块都要删除某些内容。如果有任何空块,最终可能会删除超出您想要的内容。
答案 1 :(得分:0)
您可以使用以下代码标记找到的行并在两个标记之间执行删除
1 <---- Jump to line 1
/ConstantTimer <---- Search for the first 'ConstantTimer'
kx <---- Mark it as 'x'
/ConstantTimer <---- Search for the second 'ConstantTimer'
ky <---- Mark it as 'y'
'x,'yd <---- delete between the two marks 'x and 'y
w <---- save the changes
q <---- quit ed