Как увеличить номер сборки в файле, используя sed / grep? - PullRequest
0 голосов
/ 01 марта 2012

У меня есть файл

version.h

#define BUILD_NO T("0124")
#define MILESTONE ALPHA

Предположим, что я установил правильный MILESTONE в качестве системной переменной

Я хочу увеличить номер сборки, только если новая переменная MILESTONE(ALPHA, BETA, RC, GOLDEN) это то же самое, что и в файле, в противном случае я хочу обновить только MILESTONE.

Как я могу это сделать с помощью sed / grep?

1 Ответ

1 голос
/ 01 марта 2012
inc() {
    : ${MILESTONE:?set env var first}
    local fname=${1:?file name is empty}

    if egrep -q "^#define\s+MILESTONE\s+$MILESTONE" "$fname"
    then
        gawk '/^#define BUILD_NO/{sub(/[0-9]+/, sprintf("%04d", gensub("[^0-9]", "", "g", $3)+1))}1' "$fname"
    else
        sed -r "/^(#define MILESTONE).*/s//\\1 $MILESTONE/" "$fname"
    fi
}

TEST

$ MILESTONE=ALPHA
$ inc version.h
#define BUILD_NO T("0125")
#define MILESTONE ALPHA

$ MILESTONE=BETA
$ inc version.h
#define BUILD_NO T("0124")
#define MILESTONE BETA
...