2012-10-10 60 views
2

很長時間潛伏,但第一次海報。我有一個Makefile的問題,不知道在哪裏發佈的問題,但我希望我選擇了正確的類別。用cat加載HTML,用sed通過Makefile導入

我正在使用骨幹模板,並將我的html分成多個文件。 索引文件包括此{template}文本。我打算使用Makefile從多個HTML文件中加載文本,並用這些文件中的內容替換{template}變量。

的Makefile 包括:

$(eval data := $(shell cat "file.html")) 
sed -i '' 's/$({template})/$(data)/' index.html 

桑達代碼工作利卡魅力,並將其與數據值替換它,如果我強迫它有文字,但貓休息和給我一個Error 1

我都試過:

$(eval data := $(shell grep -nr file.html)) 
$(eval data := $(shell cat "file.html")) 

,當他們到達其他一些比普通人物,他們都失敗。 我還沒有想出如何將html數據加載到變量中。

有什麼建議嗎?

+0

你試過'數據:= $(殼貓file.html)'?一些示例輸入(包括非「常規字符」)將有助於更好地解釋問題。 – npostavs

+0

[爲什麼我的sed {r FILE d}函數不工作?](http://stackoverflow.com/questions/11799432/why-is-my-sed-r-file-d-function-not-工作) – Beta

+0

(不是真正的重複,但我認爲答案將起作用。) – Beta

回答

0

由於/字符可能存在於您的templatedata中,這會破壞您的sed命令。

有處理這兩種方式:

  1. 使用不同的正則表達式的分隔符,那你肯定是不存在於你的字符串。
  2. 轉義您的/角色。

逃逸可以很容易地使用此命令來完成:

sed -e 's:/:\\/:g'