描述
写一个脚本统计文件nowcoder.txt中的每一行是否是正确的IP地址。
如果是正确的IP地址输出:yes
如果是错误的IP地址,且是四段号码的话输出:no,否则的话输出:error
假设nowcoder.txt内容如下:
192.168.1.1
192.168.1.0
300.0.0.0
123
你的脚本应该输出:
yes
yes
no
error
示例1
输入:192.168.1.1
192.168.1.0
300.0.0.0
123
复制输出:yes
yes
no
error
具体代码实现:
#!/bin/bashawk -F "." '{if(NF==4){for(i=1;i<5;i++){if($i>255 || $i<0){print("no")break}if(i==4){print("yes")}}}else{print("error")}
}' nowcoder.txt
解题思路:
1.要判断是否有四段号码,首先想到的是用awk -F的命令以"."为分隔符,NF判断是否存在四个域来判断是否有四段号码
2.之后进行判断,如果存在四段则进行下一步的条件判断,如果不存在则直接输出"error"
3.判断存在四段后对是否为正确的IP地址进行判断,所以要分别对每一段号码进行判断是否在[0-255]之间 ,因此用到for循环,如果都在则输出"yes",只要有一个不在就跳出循环,并输出"no"
4.如果i==4了说明四段号码都符合条件,则输出"yes"