我试图用包含变量和引号的字符串替换一些文本,即字符串如下:
test "$x" "1" "0" ""
其中x是数组中的参数。
我不知道该做什么,因为通常我会在替换字符串值周围使用“”,以便扩展x值,但显然不会因为我的字符串包含“” 到目前为止,她是我的命令:
cat $FILE | sed 's|/#replace|test "'"$x"'" "1" "0" "" '|g' > $NEW_FILE
但这不起作用。任何帮助将不胜感激。
答案 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