Bash에서 빌드 번호 늘리기

Bash에서 빌드 번호 늘리기

명령줄을 사용하여 빌드 번호를 1씩 늘리려고 합니다.

내 테스트 파일의 내용은 다음과 같습니다.

SOME_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 4;
SOME_SECOND_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 4;

내가 얻고 싶은 결과는 다음과 같습니다.

SOME_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 5;
SOME_SECOND_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 5;

나는 다음과 같은 것을 사용하려고합니다 :

sed -i -E "s/CURRENT_PROJECT_VERSION = (\d+);/CURRENT_PROJECT_VERSION = \1~;/" test.txt

나는 bash 스크립팅에 대한 경험이 없으며 숫자에 하나를 추가하는 방법도 모릅니다. (저는 MacOS를 사용하고 있지만 sed 명령은 Linux와 거의 동일합니다)

답변1

awk -F '= ' '/CURRENT_PROJECT_VERSION/{$2=$2+1";"}1' OFS='= ' input > output

시험

cat file
SOME_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 4;
SOME_SECOND_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 4;

awk -F '= ' '/CURRENT_PROJECT_VERSION/{$2=$2+1";"}1' OFS='= ' file
SOME_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 5;
SOME_SECOND_DUMMY_VALUE = -1;
CURRENT_PROJECT_VERSION = 5;

답변2

또 다른 답변은 awk다음과 같은 구문을 따른다고 가정합니다 key <space> = <space> value;.

awk '$1 == "CURRENT_PROJECT_VERSION" {$3=($3+1)";"}1' testfile.txt

이렇게 하면 으로 시작하는 모든 줄에서 세 번째 필드가 1씩 증가합니다. 그렇지 않으면 모든 줄을 "있는 그대로" 인쇄합니다(이것은 CURRENT_PROJECT_NUMBER코드 블록 뒤에 있는 의미입니다).1

"아무것도 추가하는지 잘 모르겠습니다.시작with a number" 구문은 이식 가능하므로 증가하기 전에 필드 3에서 후행 세미콜론을 제거할 수 있습니다(약간 더 길지만).

awk '$1 == "CURRENT_PROJECT_VERSION" {sub(";","",$3); $3=($3+1)";"}1' testfile.txt

답변3

sed 및 bash 사용:

FILE="test.txt"
REGEX="\(CURRENT_PROJECT_VERSION *= *\)\([0-9]\+\);"

version=$(sed -ne "s/${REGEX}/\2/p" ${FILE} | head -1)
((version++))

sed -ie "s/${REGEX}/\1${version};/" ${FILE}

답변4

, 를 사용하여 perl해당 위치에서 파일을 수정합니다.

perl -pi -e 's/\bCURRENT_PROJECT_VERSION\s*=\s*\K-?\d+/$& + 1/ge' test.txt

관련 정보