如何使用终端删除 XML 文件中的所有 `uuid="*-*-*-*-*"` 属性?

如何使用终端删除 XML 文件中的所有 `uuid="*-*-*-*-*"` 属性?

这是我的代码myfile.jrxml。我想要做的就是删除所有
属性uuid="contained_value"

我已经用 搜索过它们了grep -ir uuid *

如何删除它们?

<band height="50">
            <line>
                <reportElement x="8" y="10" width="543" height="1" uuid="cab05ad8-976b-42c9-a158-a6260dd630e1"/>
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" uuid="b673c65e-71e4-4e1c-81e0-ece92c094871"/>
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" uuid="f87d4dc0-134f-41ae-a828-bca4169d5eb0"/>
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <staticText>
                <reportElement x="343" y="13" width="100" height="20" uuid="58c3c4c4-f76e-48a0-897b-2bf129d1fd01"/>
                <text><![CDATA[Amount /Day]]></text>
            </staticText>
            <textField>
                <reportElement x="449" y="13" width="100" height="20" uuid="8f2e99b5-aa81-49d9-bd0c-a763c37d926e"/>
                <textFieldExpression><![CDATA[$V{day_total}]]></textFieldExpression>
            </textField>
</band>

答案1

使用sed

sed -r 's#^(([^\s]*\s)?)uuid="[^"]*"(.*)#\1\3#' file.txt
  • (([^\s]*\s)?)匹配要丢弃的部分之前的部分

  • uuid="[^"]*"匹配要丢弃的块,即uuid="...."

  • (.*)获取该行的其余部分

  • 在替换中,我们使用匹配中使用的分组模式仅保留了所需的部分

例子:

% cat file.txt                                            
<band height="50">
            <line>
                <reportElement x="8" y="10" width="543" height="1" uuid="cab05ad8-976b-42c9-a158-a6260dd630e1"/>
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" uuid="b673c65e-71e4-4e1c-81e0-ece92c094871"/>
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" uuid="f87d4dc0-134f-41ae-a828-bca4169d5eb0"/>
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <staticText>
                <reportElement x="343" y="13" width="100" height="20" uuid="58c3c4c4-f76e-48a0-897b-2bf129d1fd01"/>
                <text><![CDATA[Amount /Day]]></text>
            </staticText>
            <textField>
                <reportElement x="449" y="13" width="100" height="20" uuid="8f2e99b5-aa81-49d9-bd0c-a763c37d926e"/>
                <textFieldExpression><![CDATA[$V{day_total}]]></textFieldExpression>
            </textField>
</band>


% sed -r 's#^(([^\s]*\s)?)uuid="[^"]*"(.*)#\1\3#' file.txt
<band height="50">
            <line>
                <reportElement x="8" y="10" width="543" height="1" />
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" />
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <line>
                <reportElement x="11" y="38" width="543" height="1" />
                <graphicElement>
                    <pen lineWidth="2.75"/>
                </graphicElement>
            </line>
            <staticText>
                <reportElement x="343" y="13" width="100" height="20" />
                <text><![CDATA[Amount /Day]]></text>
            </staticText>
            <textField>
                <reportElement x="449" y="13" width="100" height="20" />
                <textFieldExpression><![CDATA[$V{day_total}]]></textFieldExpression>
            </textField>
</band>

相关内容