思路:先用 grep 正则判断是否为四段号码,不是直接输出error;再用 awk 存为数组,分别判断每段是否≤255,是则输出yes,否则输出no
#!/bin/bash
text=$(cat nowcoder.txt)
for i in $text; do
if echo "$i" | grep -Eq '([0-9]{1,3}\.){3}[0-9]{1,3}'; then
arrIP=($(echo "$i" | awk -F. '{print$1,$2,$3,$4}'))
if [ ${arrIP[0]} -le 255 ] && \
[ ${arrIP[1]} -le 255 ] && \
[ ${arrIP[2]} -le 255 ] && \
[ ${arrIP[3]} -le 255 ]
then
echo "yes"
else
echo "no"
fi
else
echo "error"
fi
done

京公网安备 11010502036488号