Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed删除多行_Sed_Lines - Fatal编程技术网

sed删除多行

sed删除多行,sed,lines,Sed,Lines,我用sed删除多行几乎没有问题。我读了很多指南和讨论,但没有一个有用。我有一个xml文件,我需要删除这三行中出现的更多内容: <function type="class"> <arg name="class.name">com.mycompany.name.UnLockIssueFunction</arg> </function> com.mycompany.name.UnLockIssueFunction 我想只删除之间的部分,但是还

我用sed删除多行几乎没有问题。我读了很多指南和讨论,但没有一个有用。我有一个xml文件,我需要删除这三行中出现的更多内容:

<function type="class">
   <arg name="class.name">com.mycompany.name.UnLockIssueFunction</arg>
</function>

com.mycompany.name.UnLockIssueFunction
我想只删除
之间的部分,但是还有更多这样的标签。我的xml文件如下所示

<post-functions>
  <function type="class">
    <arg name="class.name">com.mycompany.name.function.issue.UpdateIssueStatusFunction</arg>
  </function>
  <function type="class">
    <arg name="class.name">com.mycompany.name.function.misc.CreateCommentFunction</arg>
  </function>
  <function type="class">
    <arg name="class.name">com.mycompany.name.function.issue.GenerateChangeHistoryFunction</arg>
  </function>
  <function type="class">
    <arg name="class.name">com.mycompany.name.function.issue.IssueReindexFunction</arg>
  </function>
  <function type="class">
    <arg name="class.name">com.mycompany.name.function.event.FireIssueEventFunction</arg>
    <arg name="eventTypeId">13</arg>
  </function>
  <function type="class">
    <arg name="class.name">com.mycompany.name.UnLockIssueFunction</arg>
  </function>
</post-functions>

com.mycompany.name.function.issue.updateSueSueStatusFunction
com.mycompany.name.function.misc.CreateCommentFunction
com.mycompany.name.function.issue.GenerateChangeHistoryFunction
com.mycompany.name.function.issue.IssueReindexFunction
com.mycompany.name.function.event.fireSissueEventFunction
13
com.mycompany.name.UnLockIssueFunction
这可能适合您(GNU-sed):

sed'//!BNN/\s*\n\s*com.mycompany.name.UnLockIssueFunction\s*\n\s*/d'文件

当您进入fancier编辑时,fancier编辑器可能会有所帮助。尝试阅读VIM中的脚本,并查看以下问题:


您想删除
之间的任何内容,或者也要删除标记?您必须使用
sed
来执行此操作吗?最好使用带有DOM解析库的脚本语言。非常感谢!这正是我想要的needed@Jamalissimo(你可能想接受答案,这样就可以适当地奖励波通了)
sed '/<function type="class">/!b;N;N;/<function type="class">\s*\n\s*<arg name="class.name">com.mycompany.name.UnLockIssueFunction<\/arg>\s*\n\s*<\/function>/d' file