在此處輸入影像描述 僅需要通過呼叫腳本來更改此檔案中版本的值。我只需要在大型組態檔的一行上更改一個數字。就是這個版本
version "1.0.0-rc3" ----> version "1.0.0-rc4"
cat build.file | grep version | cut -d' ' -f2 | grep -o '[0-9]\ ' | tail -1
我得到了版本號,我只需要將它增加 1 并代替舊的,但我認為有一種比我想象的更簡單的方法
uj5u.com熱心網友回復:
謝謝@丹!我用 sed 撰寫,一切正常,腳本緊湊。我很感激快速的反應。
#!/bin/bash
VER1=$(cat build.file | grep 1.0.0-rc* | cut -d' ' -f2 | grep -o '[0-9]\ ' | tail -1)
VER2=$((VER1 1))
VER_1="1.0.0-rc$VER1"
VER_2="1.0.0-rc$VER2"
sed -i '.bak' "s/$VER_1/$VER_2/g" "build.file" #'.bak' only for macOS
echo "From version ${VER_1}"
echo " To version ${VER_2}"
uj5u.com熱心網友回復:
sed -E 's/([^0-9]|^)(1.0.0-rc3)([^0-9]|$)/\11.0.0-rc4\3/g' build.file > new.build.file
這sed將替換1.0.0-rc3with 的所有實體1.0.0-rc4,并且不會與21.0.0-rc3. 您還可以使用sed -i就地編輯,而不是重定向。
編輯:根據評論:
此腳本將替換所有出現的1.0.0-rcN, 與第一次出現的遞增版本。
#!/bin/sh -e
awk \
'match ($0, /([^0-9]|^)1.0.0-rc[0-9] /) {
if (!rc) {
rc = substr($0, RSTART, RLENGTH)
sub(/.*rc/, "", rc)
rc
}
gsub(/([^0-9]|^)1\.0\.0-rc[0-9] /, "1.0.0-rc"rc)
}
{
print
}' "$1" > "$1".ed
mv "$1".ed "$1"
如果檔案包含例如1.0.0-rc4和 1.0.0-rc7,則按此順序,它們都將替換為1.0.0-rc5。它使用它找到的第一個。如果取出 if 陳述句,它將使用它在每一行中找到的第一個陳述句。IE。你得到1.0.0-rc5和 1.0.0-rc8。
uj5u.com熱心網友回復:
使用 awk
awk -F"c" -i inplace '/version/ {$0=$1 $NF 1"\""}1' input_file
這會將檔案保存到位并在末尾增加數字。
輸出
"version 1.0.0-rc4"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346506.html
