首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed设置IP地址列表的格式,如有必要,请添加子网掩码

使用sed设置IP地址列表的格式,如有必要,请添加子网掩码
EN

Stack Overflow用户
提问于 2021-04-23 04:05:09
回答 2查看 31关注 0票数 0

我有一个IP地址列表,如下所示:

代码语言:javascript
复制
208.69.112.145
54.230.228.48
104.21.75.86/31
104.16.139.76
172.67.210.123
104.21.54.226/31
45.146.81.248/31
205.251.219.56/30

需要转换成这样的格式:

代码语言:javascript
复制
route 208.69.112.145/32 reject;
route 54.230.228.48/32 reject;
route 104.21.75.86/31 reject;
route 104.16.139.76/32 reject;
route 172.67.210.123/32 reject;
route 104.21.54.226/31 reject;
route 45.146.81.248/31 reject;
route 205.251.219.56/30 reject;

因此每个地址都应该以route开头,以reject;结尾

除了没有子网掩码的线路外,应该为这些线路添加/32 reject;

这是可行的,但它会将/32添加到每一行:

cat /ip.lst | sed 's_.*_route &/32 reject;_' > /ip.txt

EN

回答 2

Stack Overflow用户

发布于 2021-04-23 04:12:17

您可以使用此sed

代码语言:javascript
复制
sed -E 's~^~route ~; s~\.[0-9]+$~&/32~; s~$~ reject;~' file

route 208.69.112.145/32 reject;
route 54.230.228.48/32 reject;
route 104.21.75.86/31 reject;
route 104.16.139.76/32 reject;
route 172.67.210.123/32 reject;
route 104.21.54.226/31 reject;
route 45.146.81.248/31 reject;
route 205.251.219.56/30 reject;

或者这个awk

代码语言:javascript
复制
awk -F/ '{print "route", $0 (NF==2 ? "" : "/32"), "reject;"}' file

route 208.69.112.145/32 reject;
route 54.230.228.48/32 reject;
route 104.21.75.86/31 reject;
route 104.16.139.76/32 reject;
route 172.67.210.123/32 reject;
route 104.21.54.226/31 reject;
route 45.146.81.248/31 reject;
route 205.251.219.56/30 reject;
票数 3
EN

Stack Overflow用户

发布于 2021-04-23 04:10:45

仅当缺少32时才添加它。

代码语言:javascript
复制
sed '\_/[0-9][0-9]_!s_$_/32_; s_.*_route & reject;_'

希望你能明白这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67220055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档