分享

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

 SamBookshelf 2014-03-19

有些时候需要使用变量,来达到更加客观的输出结果,或替换某文件中的文本。就用变量替换,大地在写一个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 使用变量替换和执行外部命令

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多