我想更换一些文字与包含一个变量和引号字符串,即像一串一串的sed从一个数组。壳的bash对与包括“
我不知道该怎么办,因为通常我只是使用“”围绕替换字符串值,以便它扩大x值,但很明显,不会工作,因为我的字符串包含“” 她是我的命令到目前为止:
cat $FILE | sed 's|/#replace|test "'"$x"'" "1" "0" "" '|g' > $NEW_FILE
但这不起作用。任何帮助将不胜感激。
我想更换一些文字与包含一个变量和引号字符串,即像一串一串的sed从一个数组。壳的bash对与包括“
我不知道该怎么办,因为通常我只是使用“”围绕替换字符串值,以便它扩大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
我算奇数单引号的,所以我之前猜单引号| g是多余的 – Ronald