我确实有一个像这样的文件:
<receiver name="anything" type="com.mycompany.plugin.Timer">
<property name="interval">5000</property>
<handler name="ReplaceThis" type="com.mycompany.handler.FileBuilderHandler">
<property name="buildSomething">true</property>
<handler name="AlsoReplaceThis" type="com.mycompany.handler.FileExporter">
<property name="overide">true</property>
</handler>
</handler>
</receiver>
<receiver name="anything/other" type="com.mycompany.plugin.Timer">
<property name="intervall">1000</property>
<handler name="ThisMustBeReplaceAsWell" type="com.mycompany.handler.FileWatcher">
<property name="interval">2000</property>
<handler name="ThisMustBeReplaceAsWell" type="com.mycompany.converter.CSConverter">
<property name="mandant">CE</property>
<handler name="RemoveThis" type="com.mycompany.handler.FileExporter">
<property name="outputDir">/usr1/import</property>
</handler>
</handler>
现在我希望所有的行都以下面的开头
<handler name="
被替换
<handler name="ReplaceThis" type="com.mycompany.handler.FileBuilderHandler">
像这样
<handler name="FileBuilderHandler" type="com.mycompany.handler.FileBuilderHandler">
因此,属性“名称”应具有类名(类型属性的最后一部分)
有谁知道如何使用sed,awk,grep命令解决该问题?
对于结构与您的样本相同的输入,这可能会起作用:
$ sed -E 's/(handler name=")[^"]*"( *type="([^.]*\.)*([^.]*)">)/\1\4"\2/' file
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句