ping ${your_domain} -c 1 | sed ‘1{s/[^(]*(//;s/).*//;q}‘ 这行代码到底干了什么?

在看某个shell脚本时发现的这个代码,功能是提取ping时域名解析的ip地址,如
在这里插入图片描述
前面的ping不必说,现分析一下后半句的sed用法:
sed '1{s/[^(]*(//;s/).*//;q}' 等价于
sed '1{s/[^(]*(//}' | sed '1{s/).*//;q}'
1第一行,
s/使用s动作,用正则表达式匹配,然后替换,简称正则替换
s/被替换字符/替换字符/替换格式,这里//表示替换字符为空,实现删除的效果
{语句A;语句B;语句C}sed语句分开写法
q退出sed
[^(]*正则匹配语句,^(元素的*0或多个重复,sed应该是默认选择第一个
[^(]*( 后面这个(不知道干嘛的,sublime里正则匹配不到(知道的大佬可以交流下)
在这里插入图片描述在这里插入图片描述).*直接在sublime里匹配不到,因为需要转义,转义后是匹配)字符及其之后连续的0或多个所有字符
\).*转义后sublime中能匹配到,但Debian的sed提示匹配不到(知道的大佬可以交流下)

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值