2017-01-01 38 views
0

下面我設置從文件中讀取一個變量:替換字符串模式具有空間和換行使用sed的

$ replace=$(cat file.txt) 

,我試圖用sed如下

$ sed -i 's|old|'$replace'|g' 

然而,我得到下面的錯誤:

sed: -e expression #1, char 7: unterminated `s' command 

注 - 在我的情況下更換海峽ing從具有空格和換行符的文件中讀取,如下所示。

file.txt的

line 1 
line 2 

不能sed的手柄模式,有新的生產線?

+0

都file.txt的和'old'每次換水或者你可以做一個sed的命令文件既'old'和2線?你想改變另一個文件,比如'sed -i'some_command'file2.txt'? –

回答

0

這可能嗎?大概但也許有一些不可移植的GNU擴展,但它沒有什麼戰略經濟對話反正(個人行簡單的替換),所以不SED做,只是用awk:

awk 'NR==FNR{new = new $0 ORS; next} {sub(/old/,new)}1' file.txt targetFile 

注意你不需要一個shell變量與cat做,但你可以使用一個,如果你喜歡:

replace=$(cat file.txt) 
awk -v new="$replace" '{sub(/old/,new)}1' targetFile