如何合并sipcalc经grep筛选的输出得到CIDR格式IP网段
实现方法
你可以直接用awk单条命令完成提取拼接,不需要拆分多次调用工具,两种常用写法如下:
写法1(正则分隔,通用性最强)
通过正则匹配横线+前后任意数量空格作为分隔符,不受输出格式里前缀空格数量变化影响:
sipcalc 192.16.12.1/16 | awk -F'[[:space:]]+-[[:space:]]+' '/Network address/{ip=$2} /Network mask \(bits\)/{print ip"/"$2}'
逻辑说明:
-F'[[:space:]]+-[[:space:]]+'指定字段分隔规则,自动忽略横线前后的所有空格,每一行的第二个字段就是需要提取的有效内容- 匹配到
Network address行时,把网段地址存入变量ip - 匹配到
Network mask (bits)行时,直接拼接网段地址和掩码位输出
写法2(默认空格分隔,写法更简洁)
如果输出格式固定、前缀空格数不变,可以直接按默认空格拆分取对应字段:
sipcalc 192.16.12.1/16 | awk '/Network address/{ip=$4} /Network mask \(bits\)/{print ip"/"$4}'
内容的提问来源于stack exchange,提问作者Kalib Zen
相关产品推荐
相关产品推荐

