2014-01-21 26 views
0

我想更换一些文字与包含一个变量和引号字符串,即像一串一串的sed从一个数组。壳的bash对与包括“

我不知道该怎么办,因为通常我只是使用“”围绕替换字符串值,以便它扩大x值,但很明显,不会工作,因为我的字符串包含“” 她是我的命令到目前为止:

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

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

+2

我算奇数单引号的,所以我之前猜单引号| g是多余的 – Ronald

回答

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命令的第一和第三部分是单引号,以防止外壳解释。中间的字符串是唯一用双引号引起的,并且这样就解释了$x

1

试试这个sed的:

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

这样,你就应该这样做:

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