在看某个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提示匹配不到(知道的大佬可以交流下)