sed用star替换内容

sed用star替换内容,sed,tcsh,Sed,Tcsh,我可以使用tcsh中的sed,如下所示: set a = `echo $a | sed -e 's_old_new_'` 一切都很好,但当我想这样做时: set a = `echo $a | sed -e 's_old_*new_'` 我能看到“布景:没有对手。”。我怎样才能逃离这颗星星 我对tcsh了解不多,但很少有实验表明,设置变量会试图扩展右侧*。以下是一些可能有用的东西: set a="`echo '2e2' | sed -e 's_e_*_'`" echo "$a" 2*2 ech

我可以使用tcsh中的sed,如下所示:

set a = `echo $a | sed -e 's_old_new_'`
一切都很好,但当我想这样做时:

set a = `echo $a | sed -e 's_old_*new_'`

我能看到“布景:没有对手。”。我怎样才能逃离这颗星星

我对tcsh了解不多,但很少有实验表明,设置变量会试图扩展右侧*。以下是一些可能有用的东西:

set a="`echo '2e2' | sed -e 's_e_*_'`"
echo "$a"
2*2
echo $a
echo: No match.
所以,在反引号周围加上双引号,它就会起作用

set a = "`echo $a | sed -e 's_old_new_'`"
未包含在双引号中的命令替换(
`
$(..)
)将进行文件名扩展(也称为“globbing”)和分词

通常,变量赋值会抑制RHS的文件名扩展和分词(即使没有双引号),但在命令替换的情况下,显然不会抑制文件名扩展

以下是我运行的一个测试,仅供参考:

$ touch randomfile
$ a="*file"
$ var_expand=$a
$ echo "$var_expand"
*file
$
$ cmd_subst=$(echo '*file')
$ echo "$cmd_subst"
randomfile
所以我想,在分配给变量时,最好总是双引号引用命令替换

safe="$(cmd)"

注意:这是在Bash中测试的,但我认为tcsh在这方面表现出类似的行为

你们到底想做什么?最初$a的示例内容是什么?我想把给定的数字转换成我可以在bc中使用的数字。$a的示例内容:2,2.0,2.,.2,-2e2,+2e+2等。我的sed看起来像:set a=
echo$a | sed-e的[uddeeq][+-]\?*10^