Как отмечено в комментариях, плохая идея - анализировать общий XML с помощью сценариев bash.Кроме того, вы не указали выходной формат, который может помочь обеспечить лучшие альтернативы.
В любом случае, если вы абсолютно уверены , что входной файл всегда печатается так же красиво, как ив вашем примере и всегда использует двойные кавычки, и никогда не содержит экранированные XML-символы в ключах и значениях, и <appSettings>
- это единственное место, где появляются элементы <add>
, и множество других ifs, вот цикл bash, которыйизвлекает ключи и значения:
while read addkeyval; do
key=$(echo "$addkeyval" | sed 's#.* key="\([^"]*\)".*#\1#')
value=$(echo "$addkeyval" | sed 's#.* value="\([^"]*\)".*#\1#')
echo "key='$key' value='$value'"
done < <(grep "<add " "$ENV_FILE")
Этот код неэффективен и хрупок, и я не буду его объяснять.Вам решать, хотите ли вы выяснить, как интегрировать его в свой сценарий, или же вы бы предпочли потратить время на следование некоторым полезным советам в комментариях.Я был просто в настроении для небольшого упражнения по программированию bash; -)