2017-07-03 61 views
0

我有一個Makefile,我想在運行時用bash腳本更改/替換變量的值。如何使用bash腳本替換一個文件中的變量值?

SUBDIRS =常見的數據庫通信

我想替換SUBDIRS的這個值 -

protocols 

如何使用shell腳本我更換呢?

我試圖

sed 's/\(SUBDIRS =\).*/\protocols/' Makefile 

但這不能正常工作。請建議。

+0

檢查更新:

如果多行文本的機會,你可以使用awk

多線採樣輸入。 –

回答

0
sed -r 's/(SUBDIRS =).*/\1protocols/' Makefile 
SUBDIRS = protocols 

使用回refrencing,該字符串的一部分,內部()抓獲,並呼籲拍攝組。之後每個捕獲組可以被稱爲\1,\2等。您可以捕獲多達9個捕獲組。在以下的答案必須使用`awk`

echo "$y" 
SUBDIRS = common database communication 
        ola ola ola 
        bla bla bla 


echo "$y" |awk -v RS="\n\n" 'BEGIN{FS=OFS="="}{$2="protocols"}1' 
SUBDIRS =protocols 
+0

這工作得很好。 – user3256114

+0

thnx但我無法使用它。你能否看看我在新問題中發佈的完整確切情況。 https://stackoverflow.com/questions/44881278/how-to-replace-a-value-of-variable-in-one-file-from-text-file-using-bash-script 我如何閱讀從makefile變量,然後使用它的awk。 – user3256114

相關問題