2017-07-03 6 views
0

私は、実行時に変数の値をbashスクリプトで変更/置き換えたいMakefileが1つあります。bashスクリプトを使って変数の値を1つのファイルに置き換える方法は?

SUBDIRS =共通データベース通信

私はSUBDIRSのこの値を置換する - どのように私は、シェルスクリプトを使用して、それを置き換えることができ

protocols 

私は

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