shell bash-to to sed,其字符串包含“

时间:2014-01-21 09:45:14

标签: arrays string bash shell sed

我试图用包含变量和引号的字符串替换一些文本,即字符串如下:

test "$x" "1" "0" ""

其中x是数组中的参数。

我不知道该做什么,因为通常我会在替换字符串值周围使用“”,以便扩展x值,但显然不会因为我的字符串包含“” 到目前为止,她是我的命令:

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

但这不起作用。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分: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命令的第一和第三部分用单引号来防止shell解释。中间字符串是双引号中的唯一字符串,因此可以解释$x

答案 1 :(得分:1)

试试这个sed:

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

答案 2 :(得分:0)

你应该这样做:

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