我一直在修改名爲「.backup.conf」的配置文件的shell腳本時遇到了一些問題。Bash - 使用sed更改配置文件
配置文件看起來是這樣的:
inputdirs=(/etc /etc/apm /usr/local)
outputdir="test_outputdir"
backupmethod="test_outputmethod"
loglocation="test_loglocation"`
我的腳本需要更改配置文件中的變量之一,我已經與過去的3個變量沒有煩惱。
如果我想更改變量「inputdirs」/ etc/to/etc/perl,應該使用什麼表達式?
如果我用append使用echo,它只會將它附加到文件的末尾。
我試過在以下格式中使用sed: sed -i 's/${inputdirs[$((izbor-1))]}/$novi/g' .backup.conf
其中「izbor」是我想從inputdirs更改的變量,「novi」是新路徑(例如/ etc/perl)。
所以,用下面的配置文件,並用變量$izbor=1
和$novi=/etc/perl
我應該第一個變量inputdirs=/etc
更改爲/etc/perl
和可變inputdirs應該終於看起來像inputdirs=(/etc/perl /etc/apm /usr/local)
謝謝您的幫助!
Sed是一個流編輯器。你正在做一個正則表達式搜索/替換字符串......但試圖在數組上操作? – Madbreaks
如果與/ g一起使用,不應該在整個文件中搜索條件? – Juraj
這不是'g'做的,'g'是「全部取代」。但不管 - 您的搜索表達式是無效的。 http://www.grymoire.com/Unix/Sed.html#uh-1 – Madbreaks