写一个脚本统计文件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
正则表达式写法:
#!/bin/bash
awk -F “.” ‘{
if (NF == 4) {
if (
0
/
(
(
25
[
0
−
5
]
∣
2
[
0
−
4
]
[
0
−
9
]
∣
1
[
0
−
9
]
[
0
−
9
]
∣
[
1
−
9
]
[
0
−
9
]
∣
[
0
−
9
]
)
)
˙
3
(
25
[
0
−
5
]
∣
2
[
0
−
4
]
[
0
−
9
]
∣
1
[
09
]
[
0
−
9
]
∣
[
1
−
9
]
[
0
−
9
]
∣
[
0
−
9
]
)
0 ~ /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])
0 /((25[0−5]∣2[0−4][0−9]∣1[0−9][0−9]∣[1−9][0−9]∣[0−9]))˙3(25[0−5]∣2[0−4][0−9]∣1[09][0−9]∣[1−9][0−9]∣[0−9])/) {
print(“yes”)
} else {
print(“no”)
}
} else {
print(“error”)
}
}’
非正则表达式写法
awk -F ‘.’ ‘NF==4{flag=true;for(i=0;i<NF;i++){if((
i
<
0
)
∣
∣
(
i<0)||(
i<0)∣∣(i > 255)){flag=false;print “no”;break;} if((flag == true)&&(i == NF-1)) {print “yes”};}} NF<4{print “error”}’ nowcoder.txt