使用sed或awk在xml文档中查找字符串并修改文本

时间:2011-10-19 17:08:20

标签: xml macos bash sed

我正在尝试操作OS X上的Adobe Reader plist文件以停止自动更新检查。 这需要编写脚本,以便我可以影响700多台Mac上的更改。

我有:

#!/bin/bash
plutil -convert xml1 /Users/username/Library/Preferences/com.adobe.Reader.plist

转换文件以进行文本编辑。

我在其他地方发现这个用于多行搜索并替换:

sed -n '1h;1!H;${;g;s/<h2.*</h2>/No title here/g;p;}' sample.php > sample-edited.php;

源文件有重复的类似数据,因此我需要在条目 CheckForUpdatesAtStartup

之后找到该事件。

以下是文件的一部分:

<key>AutoUriDetect</key>
                    <array>
                            <integer>0</integer>
                            <true/>
                    </array>
                    <key>CheckForUpdatesAtStartup</key>
                    <array>
                            <integer>0</integer>
                            <true/>
                    </array>
                    <key>CheckGPUAtStartup</key>
                    <array>
                            <integer>0</integer>
                            <false/>
                    </array>

所以我需要为 CheckForUpdatesAtStartup 数组替换 true false

1 个答案:

答案 0 :(得分:1)

awk > outfile '/CheckForUpdatesAtStartup/, /<(true|false)\/>/ {
  sub(/true/, "false")
  }1' infile