如何使用 ed 行编辑器删除两个搜索匹配项之间的行
How to delete lines between two search-matches using ed line editor
我有一个正在编辑的文本文件(在我的例子中是 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 行。
您可以标记找到的行并使用以下代码在两个标记之间执行删除
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
如果想全部都做,可以用g
命令找到开头,然后用+
从下一行开始,再往前查找到结尾tag,用-
向后移动,删除结果内容:
g/<hashTree>/+,/<\/hashTree>/-d
请注意,这假定每个 <hashTree>
块都有 一些 内容要删除。如果有任何空块,它最终可能会删除比您想要的更多的内容。
我有一个正在编辑的文本文件(在我的例子中是 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 行。
您可以标记找到的行并使用以下代码在两个标记之间执行删除
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
如果想全部都做,可以用g
命令找到开头,然后用+
从下一行开始,再往前查找到结尾tag,用-
向后移动,删除结果内容:
g/<hashTree>/+,/<\/hashTree>/-d
请注意,这假定每个 <hashTree>
块都有 一些 内容要删除。如果有任何空块,它最终可能会删除比您想要的更多的内容。