четверг, 29 декабря 2011 г.

Пример обработки XML в BASH

Понадобилось обработать xml.
Нашел вариант как это сделать на Bash :)



##
# replace node value in sly xml
#     
#         $2
#         Some Old Value
#     
# @param $1 filename
# @param $2 param name
# @param $3 param value to set
# used if there is no xpath tool in system
set_param_value() {
    local new_value="$3"
    local webxml="$1"
    # TODO find backup destination name
    local old="$webxml".tmp
    local catch_next_tag=0
 
    if [ ! -w "$webxml" ]; then
        echo -e "${ERR}$webxml is not writable! Failed!${N}"
        return 1;
    fi
 
    if ! cp "$webxml" "$old"; then
        echo -e "${ERR}Cannot save old file. Failed!${N}";
        return 2;
    fi
 
    while IFS='<>' read _ starttag value endtag; do
        case "$starttag" in
            param-name)
                case "$value" in
                    $2) catch_next_tag=1;;
                esac ;;
            param-value)
                if [ 1 -eq $catch_next_tag ]; then
                    old_value="$value"; break;
                fi;;
        esac
    done < "$old"
 
    cat "$old" | sed "s#$old_value#$new_value#g" > "$webxml.probe"
    mv --force "$webxml.probe" "$webxml" &&
        (echo "${OK} $webxml") || 
        (echo $FAIL; return 255;)
}
Ссылки:
Пример обработки XML в BASH
разбор xml на bash

Комментариев нет:

Отправить комментарий