如何使用 sed 命令将变量值括在单引号中
how to use sed command to enclose a variable value in single quotes
我这样设置环境变量
setenv ENV {"a":{"b":"http://c","d":"http://e"}}
我是这样使用sed的
sed 's|(ENV)|('"$ENV"')|' aFile
用下面的
代替(ENV)
(a:b:http://c a:d:http://e)
但是,如果我在单引号内设置这样的变量
setenv ENV '{"a":{"b":"http://c","d":"http://e"}}'
这样替换
({"a":{"b":"http://c","d":"http://e"}})
但我希望 (ENV)
的 sed 输出为
('{"a":{"b":"http://c","d":"http://e"}}')
首先,在定义时引用(或转义)您的变量(使用 setenv
)很重要,如 , since braces and double quotes (among others) are metacharacters in C shell.
中所述
您可以用单引号引用完整的值:
$ setenv ABC '{"a":{"b":"http://c","d":"http://e"}}'
$ echo "$ABC"
{"a":{"b":"http://c","d":"http://e"}}
或者,使用反斜杠转义元字符,像这样:
$ setenv ABC \{\"a\":\{\"b\":\"http://c\",\"d\":\"http://e\"\}\}
$ echo "$ABC"
{"a":{"b":"http://c","d":"http://e"}}
现在,对于您问题的 sed
部分 -- 以及如何在替换时引用变量。
只需在 sed
替换表达式中添加单引号即可:
$ setenv ABC '{"a":{"b":"http://c","d":"http://e"}}'
$ echo '(ABC)' | sed 's|(ABC)|('"'$ABC'"')|'
('{"a":{"b":"http://c","d":"http://e"}}')
注意,此外,您还应该注意 转义 sed
替换元字符 (仅这三个:\
、/
, 和 &
) 在你的变量中。您似乎意识到了这一点,因为您已经在正则表达式中使用 |
作为定界符,但是如果您不确定变量包含什么,最好将其转义。有关 sed
中可靠的转义元字符的详细信息,请参阅 。简而言之,要转义单行替换模式,运行 通过 sed 's/[&/\]/\&/g'
.
我这样设置环境变量
setenv ENV {"a":{"b":"http://c","d":"http://e"}}
我是这样使用sed的
sed 's|(ENV)|('"$ENV"')|' aFile
用下面的
代替(ENV)
(a:b:http://c a:d:http://e)
但是,如果我在单引号内设置这样的变量
setenv ENV '{"a":{"b":"http://c","d":"http://e"}}'
这样替换
({"a":{"b":"http://c","d":"http://e"}})
但我希望 (ENV)
的 sed 输出为
('{"a":{"b":"http://c","d":"http://e"}}')
首先,在定义时引用(或转义)您的变量(使用 setenv
)很重要,如
您可以用单引号引用完整的值:
$ setenv ABC '{"a":{"b":"http://c","d":"http://e"}}'
$ echo "$ABC"
{"a":{"b":"http://c","d":"http://e"}}
或者,使用反斜杠转义元字符,像这样:
$ setenv ABC \{\"a\":\{\"b\":\"http://c\",\"d\":\"http://e\"\}\}
$ echo "$ABC"
{"a":{"b":"http://c","d":"http://e"}}
现在,对于您问题的 sed
部分 -- 以及如何在替换时引用变量。
只需在 sed
替换表达式中添加单引号即可:
$ setenv ABC '{"a":{"b":"http://c","d":"http://e"}}'
$ echo '(ABC)' | sed 's|(ABC)|('"'$ABC'"')|'
('{"a":{"b":"http://c","d":"http://e"}}')
注意,此外,您还应该注意 转义 sed
替换元字符 (仅这三个:\
、/
, 和 &
) 在你的变量中。您似乎意识到了这一点,因为您已经在正则表达式中使用 |
作为定界符,但是如果您不确定变量包含什么,最好将其转义。有关 sed
中可靠的转义元字符的详细信息,请参阅 sed 's/[&/\]/\&/g'
.