最新消息:找几个友情链接呗,稍微跟本博客相关的都OK,百度Google均有收录(50+)即可,添加后邮件至:admin(at} 61zyw.com,随后我就添加

sed 使用变量替换和执行外部命令

VPS文档 dadi666.com 4294浏览 0评论

有些时候需要使用变量,来达到更加客观的输出结果,或替换某文件中的文本。就用变量替换,大地在写一个shell脚本的时候,尝试网上搜索,发现很多都说在sed使用变量的语句,单引号换成双引号即可,显然的,这篇文章介绍的,还有更多的方法。

先来介绍一下sed中使用变量替换

1、sed命令使用双引号的情况下,可以使用$var(变量)直接引用:

echo | sed "s/^/$RANDOM.rmvb_/g"

13562.rmvb_

2、sed命令使用单引号的情况下,可以使用'"$var"'引用(单引号,然后双引号,变量):

echo | sed 's/^/'"$RANDOM"'.rmvb_/g'

2442.rmvb_

sed中执行外部命令

1、sed命令使用单引号的情况下使用'`shell command`'或者'$(shell command)'引用命令执行的结果:

echo | sed 's/^/'`echo $RANDOM`'.rmvb_/g'

7700.rmvb_# 结果

# 上面的命令使用了旧式的命令替换,也可以采用新式的命令替换方法,如下:

echo | sed 's/^/'$(echo $RANDOM)'.rmvb_/g'

13856.rmvb_# 结果

# 下面例子取用当前日期作为结果的一部分,如下:

echo | sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'

20130401.rmvb_ # 结果

2、sed命令中使用双引号的情况下,直接`shell command`或者$(shell command)引用命令执行。

echo | sed "s/^/$(date +"%Y%m%d").rmvb_/g"

20130401.rmvb_# 结果

# 使用环境变量$RANDOM以及旧式命令替换的例子:

echo | sed "s/^/`echo $RANDOM`.rmvb_/g"

29484.rmvb_# 结果

总结一下

在sed语句里面,变量替换或者执行shell命令,双引号比单引号少绕一些弯子;所以,sed和变量的关键词搜索的结果,众多都写上替换单引号为双引号。

额外

再来一个例子,大地在写一个shell脚本的使用,用的是如下方法来替换。

sed -i 's/^.*rpc-username.*/"rpc-username": "'$(echo $username)'",/' /var/lib/transmission-daemon/info/settings.json

很多时候,也许因为内容中也有双引号或单引号,所以,上面介绍的众多方法,在不确定的情况下,可以分别尝试使用。方法倒是其次,至少得先确保你的脑子不会成为一团浆糊,找到自己熟悉的。

转载请注明:大地博客 » sed 使用变量替换和执行外部命令

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址