我有档案
version.h中
#define BUILD_NO T("0124")
#define MILESTONE ALPHA
假设我将正确的MILESTONE设置为系统变量
我想只在新的MILESTONE变量(ALPHA,BETA,RC,GOLDEN)与文件相同时才增加内部版本号,否则我只想更新MILESTONE。
我怎样才能使用sed / grep?
答案 0 :(得分:1)
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
}
$ 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