我有一個.spec檔案,其中包含如下行:
Requires: rpm_name = 1.0.0
Requires: longer_rpm_name = 1.0.1
我正在整理一個腳本,該腳本將寫入.spec檔案并使用各自的新版本更新 rpm 版本。
使用sed我可以做類似的事情sed -i 's/Requires: rpm_name.*/Requires: rpm_name = 2.0.0'。這將導致以下結果:
Requires: rpm_name = 2.0.0
Requires: longer_rpm_name = 1.0.1
我不想替換整行,而是簡單地替換=字符后面的版本號,以使該行的格式保持不變。我想:
Requires: rpm_name = 2.0.0
Requires: longer_rpm_name = 1.0.1
我想sed找到以開頭的行Requires: rpm_name,然后只替換版本號而不是整行。這可能嗎?
uj5u.com熱心網友回復:
在命令的開頭使用地址規范來匹配該行。然后在命令中使用正則運算式s來替換最后的數字。
sed -i '/^Requires: rpm_name/s/[0-9.]*$/2.0.0/'
uj5u.com熱心網友回復:
記住等號之前的部分
sed -ri 's/(Requires: rpm_name.*)=/\1= 2.0.0/'
uj5u.com熱心網友回復:
使用sed
$ sed 's/\(\<rpm_name \ =\).*/\1 2.0.0/' input_file
Requires: rpm_name = 2.0.0
Requires: longer_rpm_name = 1.0.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/471520.html
上一篇:在jqbash腳本中連接字串變數
