我试图用包含变量和引号的字符串替换一些文本,即类似:
的字符串test "$x" "1" "0" ""
其中x是来自数组的参数。
我不确定该怎么做,因为我通常会使用"替换字符串值,以便它扩展x值,但显然,当我的字符串包含"到目前为止,她是我的命令:
cat $FILE | sed 's|/#replace|test "'"$x"'" "1" "0" "" '|g' > $NEW_FILE
但这无效。任何帮助将不胜感激。
此版本似乎可以做您想要的:
$ 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
。
尝试此SED:
sed "s|/#replace|test "$x" "1" "0" ""|g" "$FILE" > "$NEW_FILE"
以这种方式您应该这样做:
FILEPATH="/path/to/SourceFile"
sed 's|search|replace|' $FILEPATH > /path/to/EditedFile-new