2014-01-30 43 views
0

我嘗試了以下代碼片段,但sed命令替換了顯式顯示的$ var,而不是當時var的thr值。 ?我該如何解決這個S將for循環中的變量替換爲sed命令

for var in 01 02 
do  
sed -e 's/%\\include{removeMe}/\\include{chapter_$var}/g' 
done 
+0

你能提供你的輸入數據的樣本(順便說一句sed命令已丟失的文件名稱)。 – anubhava

回答

2

嘗試雙引號:

sed -e "s/%\\include{removeMe}/\\include{chapter_$var}/g" 

(。更妙的是,第一次嘗試單/雙引號用一個簡單的例子)

+2

是的,解決方案是使用雙引號來擴展變量。 – fedorqui

+0

@Beta使用雙引號沒有做任何替換!單引號替換了文本,而不是替換$ var。 – Geoff

+0

@Beta問題是%符號。沒有它它的作品。但是有了它,就不會發生替換。 – Geoff

0
for var in 01 02 
do  
    sed -e "/[%]\(\\include{\}removeMe}/ s//\1chapter_${var}}/g" 
done 

使用回參考和封裝

但它可以被替換,如果var不用於文件名關聯(s Ø你的樣品中戰略經濟對話的管道)等(也因爲置換01將刪除找到的02更換模式)的可能性

YourStream | sed -e 's/%\(\\include{\}removeMe}/\1chapter_01}/g'