예를 들어 XML 태그가 있습니다.
<tag name="abc"></tag>
"" 안의 문자열을 태그 이름으로 바꾸고 싶습니다. 즉, 위의 XML 태그는 이제 다음과 같아야 합니다.
<abc name="abc"></abc>
답변1
sed/awk와 같은 것을 사용해서는 안 되며, xml/xslt 프로세서(예 xmlstarlet
: .
템플릿을 사용하여 xslt 파일을 만들고 이를 변환.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>
그런 다음 다음을 통해 XML 문서에 변환을 적용할 수 있습니다.
xmlstarlet tr transform.xsl input.xml
답변2
원하는 대로 하세요. 단, 다음과 같습니다.
STR='<tag name="abc"></tag>'
AUX=$(echo $STR | cut -d"\"" -f2)
echo $STR | sed "s/tag/$AUX/g"