2014-01-21 52 views
0

我想更換一些文字與包含一個變量和引號字符串,即像一串一串的sed從一個數組。殼的bash對與包括「

我不知道該怎麼辦,因爲通常我只是使用「」圍繞替換字符串值,以便它擴大x值,但很明顯,不會工作,因爲我的字符串包含「」 她是我的命令到目前爲止:

cat $FILE | sed 's|/#replace|test "'"$x"'" "1" "0" "" '|g' > $NEW_FILE 

但這不起作用。任何幫助將不勝感激。

+2

我算奇數單引號的,所以我之前猜單引號| g是多餘的 – Ronald

回答

2

這個版本似乎做你想要什麼:

$ x=ABC ; echo '/#replace' | sed 's|/#replace|test "'"$x"'" "1" "0" "" |g' 
test "ABC" "1" "0" "" 

sed命令由三個串。爲了清楚起見,我讓他們之間此處添加空格:

's|/#replace|test "' "$x" '" "1" "0" "" |g' # Don't try to use this form. It is for explication only. 

sed命令的第一和第三部分是單引號,以防止外殼解釋。中間的字符串是唯一用雙引號引起的,並且這樣就解釋了$x

1

試試這個sed的:

sed "s|/#replace|test \"$x\" \"1\" \"0\" \"\"|g" "$FILE" > "$NEW_FILE" 
0

這樣,你就應該這樣做:

FILEPATH="/path/to/SourceFile" 
sed 's|search|replace|' $FILEPATH > /path/to/EditedFile-new