看到一个sed脚本,可通过ping得到域名公网IP地址, 如下可正常工作,
ping baidu.com -c 1| sed '1{s/[^(]*(//;s/).*//;q}'
拆分开来等同于 ping baidu.com -c 1| sed '1{s/[^(]*(//}' | sed '1{s/).*//;q}'
我们用他处理数据:
PING baidu.com (220.181.38.148) 56(84) bytes of data.
得到 220.181.38.148
问题来了
ping baidu.com -c 1| sed '1{s/[^(]*(//}'
执行结果为啥不是84) bytes of data.
我写的 ping baidu.com -c 1| sed '1{s/.*(//}'
处理结果就是 84) bytes of data.
一行同时匹配两个目标,从左到右执行第一个?执行第一个,这个是sed 默认的吗?
为了求解我也可以这么写: ping baidu.com -c 1| sed '{s/.*[ ](//}'
这行脚本到底做了什么 ping baidu.com -c 1| sed '1{s/[^(]*(//}'
百思不得骑姐
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…