#!/bin/bash
# 定义正则表达式以匹配正确的IPv4地址
ipv4_regex='^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$'
# 逐行读取文件nowcoder.txt
while IFS= read -r line; do
# 检查行是否为空(处理空行的情况)
if [ -z "$line" ]; then
echo "error" # 根据要求,空行应输出error(但此处假设空行不包含四段号码,所以也可以理解为格式错误)
continue
fi
# 使用IFS=和-r选项确保读取整行,包括前导和尾随空白字符(如果有的话)
# 但由于后续处理需要去除空白字符对判断的影响,这里先不特别处理空白字符
# 检查行是否由四段号码组成(通过点分隔)
if [[ "$line" =~ ^([^.]+\.){3}[^.]+$ ]]; then
# 如果是四段号码,再检查是否是正确的IPv4地址
if [[ "$line" =~ $ipv4_regex ]]; then
echo "yes"
else
echo "no"
fi
else
echo "error"
fi
done <nowcoder.txt