procura e substitui string

1

Eu tenho uma tag XML, por exemplo

<tag name="abc"></tag>

Eu queria substituir a string "" por dentro com o nome da tag, ou seja, a tag XML superior deveria se tornar agora

<abc name="abc"></abc>
    
por akhilesh 14.07.2014 / 11:03

2 respostas

1

Você não deve usar algo como sed / awk para isso e usar um processador xml / xslt, como xmlstarlet .

Crie um arquivo xslt com um modelo como e salve-o em transform.xsl:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="tag">
    <xsl:element name="{@name}">
      <xsl:attribute name="name">
        <xsl:value-of select="@name"/>
      </xsl:attribute>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

Você pode aplicar a transformação no seu documento xml via xmlstarlet tr transform.xsl input.xml

    
por 14.07.2014 / 11:32
-1

Faça como preferir, mas aqui está:

STR='<tag name="abc"></tag>'
AUX=$(echo $STR | cut -d"\"" -f2)
echo $STR | sed "s/tag/$AUX/g"
    
por 14.07.2014 / 11:27