Подход sed, основанный на strager и msw, будет работать нормально , если изменяемый список будет в формате XML, но если он в двоичном формате Apple, он, вероятно, испортит формат файла.Вы можете использовать plutil, чтобы сначала преобразовать его в XML:
plutil -convert xml1 filename
sed -i -e "s/placeholder/$macnum/g" filename
Впоследствии нет необходимости преобразовывать его обратно в двоичный формат, так как платформы plist Apple считывают оба формата взаимозаменяемо.Другой подход заключается в использовании PlistBuddy для редактирования содержимого plist (хотя сценарию потребуется знать, какие записи устанавливать для каких значений, а не просто заменять заполнитель):
/usr/libexec/PlistBuddy -c "set :oneentry 'value including $macnum where appropriate'" filename
/usr/libexec/PlistBuddy -c "set :anotherentry 'value including $macnum where appropriate'" filename
НаконецВы можете сделать то же самое со значениями по умолчанию, хотя для этого необходимо указать файл .plist по полному пути и оставить имя .plist вне его имени:
defaults write oneentry "value including $macnum where appropriate" /path/to/filename-without-plist
defaults write anotherentry "value including $macnum where appropriate" /path/to/filename-without-plist