문자열 검색 및 바꾸기

문자열 검색 및 바꾸기

예를 들어 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"

관련 정보