首页新闻找找看学习计划

shell sed命令的使用问题

0
悬赏园豆:120 [待解决问题]

RHINOSQLD_IPADDR=`sed '/^rhinosqlipaddr=/!d ;s/.*=//' ${CONFDIR}/sybase.properties`

 

如上,该语句作用是在${CONFDIR}/sybase.properties稳重中获取rhinosqld的ip地址,但是表达式后半部分“=/!d ;s/.*=//”看不懂(不理解),求大神指导下(百度过好几个博客都没看懂~)

chenyuedog的主页 chenyuedog | 初学一级 | 园豆:8
提问于:2016-06-04 10:15
< >
分享
所有回答(2)
0

^rhinosqlipaddr=  首先 找到 以  rhinosqlipaddr=   开始的 内容 ,在此基础上,s/.*=//   --> 匹配除 "\n" 之外的任何单个字符0次或多次,并且是以 = 结尾的 内容 ,把这个匹配到的内容,替换为 空。

mke | 园豆:184 (初学一级) | 2016-06-04 12:50

该语句执行结果,好像与您描述的不太一致哈~

!d ;s/.*=//' 

其中的;号,是什么意思?

!d,什么意思?

//',有事啥意思?

支持(0) 反对(0) chenyuedog | 园豆:8 (初学一级) | 2016-07-19 13:33

@chenyuedog: ! 非的意思 d 删除的 意思 所以 !d表示删除其他内容出了当前行。

s/要替换的内容/新内容/    .*表示任意匹配出\n 之外任意单个字符 0到多次

所以 .*= 表示任意内容且以= 结尾的

 

其实这些就是 sed 指令的 选项 的组合 来达到想要的效果。

支持(0) 反对(0) mke | 园豆:184 (初学一级) | 2016-07-19 20:56
0

不懂,来看看

男人要爽 | 园豆:15 (初学一级) | 2016-06-04 23:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册