shell bash-to to sed 带有包含"



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

的字符串
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

相关内容

  • 没有找到相关文章

最新更新