我有一個ini
文件與此類似修改INI文件
[test]
foo=bar
,如果我們把這個ini
文件test1.ini
如何使用foo
值更改爲foobarbaz
例如shell script
。
我已經嘗試了以下,它不適合我。我在ini文件中看不到更新的更改。我怎麼寫它?
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
你有任何其他建議
我有一個ini
文件與此類似修改INI文件
[test]
foo=bar
,如果我們把這個ini
文件test1.ini
如何使用foo
值更改爲foobarbaz
例如shell script
。
我已經嘗試了以下,它不適合我。我在ini文件中看不到更新的更改。我怎麼寫它?
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
你有任何其他建議
有文件更新,使用-i
選項的sed:
sed -i "/^foo=/s/=.*/=foobarbaz/" test1.ini
從man sed
:
- 我[ SUFFIX], - in-place [= SUFFIX]在地方
編輯的文件(讓備份,如果提供的後綴)
所以,你也可以做
sed -i.bak "/^foo=/s/=.*/=foobarbaz/" test1.ini
我個人使用一個更加完備sed
命令,相同的選項可能會出現在幾個不同的部分:
sh$ sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test1.ini
# ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# make a in the right perform the substitution
# *backup* section as you want
而作爲一個安全網,我會補充:
sh$ diff test1.ini{,.bak}
2c2
< foo = foobarbaz
---
> foo=bar
假設你的意思是你想'foo = foobarbaz'而不是'foobarbaz = bar',你的代碼在Windows,mingw(MSYS),bash下工作。引用是依賴於shell的;嘗試在'sed'字符串周圍使用單引號(''')而不是雙引號('「')。 – cxw
使用'-i'選項''sed -i」/^foo=/s/=.*/= foobarbaz /「test1.ini'(注意重定向'<'已經從命令中刪除)。 – devnull