Bash ninjas問題:我有一個XML模板文件,其格式爲{{VARIABLE_NAME}}
,有一些模板標記並希望查找/替換該標記的所有出現位置文本文件的內容。Bash/sed字符串替換爲文件內容(包含換行符)
所以,想象template.xml
看起來是這樣的:
<?xml>
<root>
<description>
{{DESCRIPTION}}
</description>
</root>
而且我有一個名爲description.txt
可能潛在地包含任何字符的文本文件(假設它已經是XML的安全爲簡單起見)。我想用文件內容替換標記,支持換行符和其他字符。
sed -i '' -e "s/{{DESCRIPTION}}/$DESCRIPTION/g" template.xml
但是,如果$DESCRIPTION
包含換行符,sed的梁木:
sed: 1: "s/{{DESCRIPTION}}/Hello w ...": unescaped newline inside substitute pattern
是
此前我已經在我的代碼這樣的(這對於簡單的字符串的偉大工程)一直在做這個有更好的方法來做到這一點,或者我應該首先在$DESCRIPTION
變量中首先搜索/替換所有帶有轉義變體的換行符。還有我需要逃脫的任何其他角色,如/
?
這幾乎可以正常工作,但由於某些原因,它只取文件的最後一行,忽略最後一行之前的任何內容。這可能是我的錯,我不知道awk。 – devios1
@chaiguy是你的awk gnu嗎? – Kent
我正在運行Mac OS X 10.9,因此可能不會。 – devios1