Shell-Script
在 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 上的幾乎相同)
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;
另一個答案,僅使用
awk
. 這假設您key <space> = <space> value;
始終遵守以下語法:awk '$1 == "CURRENT_PROJECT_VERSION" {$3=($3+1)";"}1' testfile.txt
這會將所有行中的第三個欄位增加 1,
CURRENT_PROJECT_NUMBER
但否則會“按原樣”列印所有行(這是1
程式碼塊後面的含義)。請注意,我不確定“以數字開頭的任何內容遞增”語法是否可移植,因此可以確定(並且僅稍長一點),我們可以在遞增之前從欄位 3 中刪除尾隨分號:
awk '$1 == "CURRENT_PROJECT_VERSION" {sub(";","",$3); $3=($3+1)";"}1' testfile.txt