Используйте sed или awk, чтобы найти строку и изменить текст, следующий в документе XML - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь манипулировать plist-файлом Adobe Reader в OS X, чтобы остановить автоматическую проверку обновлений. Это должен быть сценарий, чтобы я мог повлиять на изменения на более чем 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>

Поэтому мне нужно заменить true на false для CheckForUpdatesAtStartup .

1 Ответ

1 голос
/ 20 октября 2011
awk > outfile '/CheckForUpdatesAtStartup/, /<(true|false)\/>/ {
  sub(/true/, "false")
  }1' infile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...