我正在尝试自动化Adobe CC Cleaner工具的创建方式,然后要求管理员取消注释特定行,或者在我们的情况下,取消注释每个产品的所有行,以按照here for macOS的说明进行全面清除。>
我想知道如何删除/取消注释<!--
,该-->
仅在每个产品/行上具有前导空格和 <?xml version="1.0" encoding="UTF-8"?>
<Products>
<Properties>
<Property name="eulaAccepted">1</Property>
</Properties>
<CreativeCloud>
<!--<Product productName="AdobeCreativeCloud" version="2.0"/>-->
<!--<Product productName="After Effects" version="17.0.5"/>-->
<!--<Product productName="Camera Raw" version="12.2"/>-->
<!--<Product productName="STI_Color_MotionPicture_HD" version="1.2"/>-->
<!--<Product productName="STI_ColorCommonSet_RGB_HD" version="1.1"/>-->
<!--<Product productName="Bridge" version="10.0.3"/>-->
<!--<Product productName="Illustrator" version="24.0.3"/>-->
<!--<Product productName="CoreSync" version="4.3.34"/>-->
<!--<Product productName="InDesign" version="15.0.2"/>-->
<!--<Product productName="Photoshop" version="21.1.1"/>-->
<!--<Product productName="HD_ASU" version="2.0"/>-->
<!--<Product productName="Lightroom" version="3.2"/>-->
<!--<Product productName="Media Encoder" version="14.0.4"/>-->
<!--<Product productName="CCX Process" version="3.5.1"/>-->
<!--<Product productName="Premiere Pro" version="14.0.4"/>-->
<!--<Product productName="CC Library" version="3.7.4"/>-->
</CreativeCloud>
<AAM></AAM>
<AdobeIdCredentials></AdobeIdCredentials>
<CS6></CS6>
<CS5></CS5>
<CS4></CS4>
<CS3></CS3>
</Products>
,而不会影响其他行。
以下是在Adobe CC 2020产品上使用该工具生成cleanup.xml文件之后的输出示例:
h[1:-1,1:-1] = (h[2:,1:-1] + h[:-2,1:-1] + h[1:-1,2:] + h[1:-1,:-2]) / 4
答案 0 :(得分:0)
尝试
使用xmlstarlet
xmlstarlet ed -d '//comment()'
使用sed
sed '/Product/ s#<!--##g;s#-->##g;'
演示:
echo '<!--<Product productName="AdobeCreativeCloud" version="2.0"/>-->' | sed '/Product/ s#<!--##g;s#-->##g;'
<Product productName="AdobeCreativeCloud" version="2.0"/>
答案 1 :(得分:0)
假设您的实际输入与示例中显示的一样简单且规则,则可以使用任何sed进行操作:
$ sed 's/<!--\(.*\)-->/\1/' file
<?xml version="1.0" encoding="UTF-8"?>
<Products>
<Properties>
<Property name="eulaAccepted">1</Property>
</Properties>
<CreativeCloud>
<Product productName="AdobeCreativeCloud" version="2.0"/>
<Product productName="After Effects" version="17.0.5"/>
<Product productName="Camera Raw" version="12.2"/>
<Product productName="STI_Color_MotionPicture_HD" version="1.2"/>
<Product productName="STI_ColorCommonSet_RGB_HD" version="1.1"/>
<Product productName="Bridge" version="10.0.3"/>
<Product productName="Illustrator" version="24.0.3"/>
<Product productName="CoreSync" version="4.3.34"/>
<Product productName="InDesign" version="15.0.2"/>
<Product productName="Photoshop" version="21.1.1"/>
<Product productName="HD_ASU" version="2.0"/>
<Product productName="Lightroom" version="3.2"/>
<Product productName="Media Encoder" version="14.0.4"/>
<Product productName="CCX Process" version="3.5.1"/>
<Product productName="Premiere Pro" version="14.0.4"/>
<Product productName="CC Library" version="3.7.4"/>
</CreativeCloud>
<AAM></AAM>
<AdobeIdCredentials></AdobeIdCredentials>
<CS6></CS6>
<CS5></CS5>
<CS4></CS4>
<CS3></CS3>
</Products>
或者如果您确实只需要将其应用于以空格开头的行,则对ERE使用-E
的GNU或OSX / BSD sed:
sed -E 's/^([[:space:]]+)<!--(.*)-->/\1\2/' file
或任何POSIX sed:
sed 's/^\([[:space:]]\{1,\}\)<!--\(.*\)-->/\1\2/' file