Para a entrada estruturada idêntica à sua amostra, isso pode funcionar:
$ sed -r 's/(handler name=")[^"]*"( *type="([^.]*\.)*([^.]*)">)/"/' file
Eu tenho um arquivo como este:
<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>
Agora quero todas as linhas com o seguinte começo
<handler name="
para substituir de
<handler name="ReplaceThis" type="com.mycompany.handler.FileBuilderHandler">
para algo assim
<handler name="FileBuilderHandler" type="com.mycompany.handler.FileBuilderHandler">
Portanto, o atributo "name" deve ter o Classname (última parte do atributo type)
Alguém tem uma idéia de como resolver isso com um comando sed, awk, grep?