Script para editar el campo CFBundleVersion del archivo PROJECT-Info.plist

Para establecer un sistema de integración continua, Hudson, escribí un script bash para construir el proyecto Xcode automáticamente. Además, en la configuración de Depuración, se me pidió que inserte el número de revisión svn del proyecto en el campo CFBundleRevision del archivo PROJECT-Info.plist como $ {BUNDLE_VERSION} .r $ {SVN_REVISION}.

Encontrará el código fuente del archivo PROJECT-Info.plist a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
[...]
    <key>CFBundleVersion</key>
    <string>1.0</string>
[...]
</dict>
</plist>

Intenté este script de bash a continuación:

sed 'N;s_^.*<key>CFBundleVersion</key>.*<string>[0-9][0-9]*\.[0-9][0-9]*</string>$_<key>CFBundleVersion</key>\
<string>'"$BUNDLE_VERSION"'\.r'"$SVN_REVISION"'</string>_' $PROJECT-Info.plist

Este script debe reemplazar la cadena "1.0" con $ {BUNDLE_VERSION} .r $ {SVN_REVISION} (solo en la salida estándar actualmente). Sin embargo, el reemplazo funciona sin la opción 'N' que incluye la siguiente línea en el proceso sed y para una línea a la vez. Pero hay muchas líneas con "<string>[...]</string> "cadena en el archivo PROJECT-Info.plist ...

Creo que es mi forma de procesar los caracteres desconocidos entre las dos líneas (la opción 'N' y ". *" Para cualquier carácter) está mal.

Alguna idea

Gracias de antemano y perdón por mi mal nivel de inglés.

Respuestas a la pregunta(3)

Su respuesta a la pregunta