您的位置 首页 > 数码极客

shell练习之判断输入是否是IP地址

这个题目有点意思,知识点比较多哟。

描述

写一个脚本统计文件nowcoder.txt中的每一行是否是正确的IP地址。

如果是正确的IP地址输出:yes

如果是错误的IP地址,四段号码的话输出:no,否则的话输出:error

假设nowcoder.txt内容如下

192.168.1.1192.168.1.0300.0.0.0123

你的脚本应该输出

yes

yes

no

error

思路1:awk使用分隔符“.”然后判断$1$2$3$4是否满足条件,当然也可以使用for循环判断$i更简洁些,不过注意break:

awk -F "." '{if(NF!=4) print "error";\else if($1>255||$1<0||$2>255||$2<0||$3>255||$3<0||$4>255||$4<0) print "no";else print "yes"}' nowcoder.txt

awk -F "." '{if(NF!=4) print "error";else \{for(i=1;i<=4;i++) if($i<0||$i>255) {print "no";break}}if(i==5) print "yes"}' nowcoder.txt

思路2:当然是正则表达式,更加简洁明了:

awk -F "." '{ if(NF==4) { if($0 ~ /^((25[0-5]|2[0-4][0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9])$/) print "yes" else print "no" } else print "error"}' nowcoder.txt

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“shell练习之判断输入是否是IP地址”边界阅读