LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 986|回复: 8

sed命令中,如果替换内容是一变量怎么办

[复制链接]
发表于 2004-10-17 12:22:11 | 显示全部楼层 |阅读模式
sed -n 's/:.*/varriable/p' filename
这样无法正确解析
该怎么写才对呢?
发表于 2004-10-17 13:12:25 | 显示全部楼层
${xxxx}
这个格式行不行?。。我手边没linux。。。。
发表于 2004-10-18 20:34:22 | 显示全部楼层
把单引号换成双引号试试
发表于 2004-10-19 15:54:33 | 显示全部楼层

这个问题刚好我最近才解决了

sed -e "svarriable1varriable:g"
发表于 2004-10-21 12:48:10 | 显示全部楼层
必须要用双引号,而且变量和其他字符混在一起的话要加上双括号来变量扩展,要不然shell不知道你的变量名是哪一个。
发表于 2004-10-21 15:26:59 | 显示全部楼层
Please give a example.
发表于 2004-10-21 15:39:10 | 显示全部楼层
来自IBM developerwork的例子:

$ echo $myvar
This is my environment variable!
通过在环境变量的前面加上一个 $,可以使 bash 用 myvar 的值替换它。这在 bash 术语中叫做“变量扩展”。但是,这样做将怎样:
$ echo foo$myvarbar
foo
我们希望回显 "fooThis is my environment variable!bar",但却不是这样。错在哪里?简单地说,bash 变量扩展设施陷入了困惑。它无法识别要扩展哪一个变量:$m、$my、$myvar 、$myvarbar 等等。如何更明确清楚地告述 bash 引用哪一个变量?试一下这个:
$ echo foo${myvar}bar
fooThis is my environment variable!bar
发表于 2004-10-21 16:21:21 | 显示全部楼层

不错,又学会一招!

又学会一招,多谢楼上的兄弟!
发表于 2004-10-21 18:30:14 | 显示全部楼层
'' 但引号禁用了bash扩展,$字符被当成普通的字符,所以只能用
“”,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表