#!/bin/bash
awk '{
    if ($0 ~ /^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/) {
        print "yes"
    } else if ($0 ~ /^(0|[1-9][0-9]{0,2})\.(0|[1-9][0-9]{0,2})\.(0|[1-9][0-9]{0,2})\.(0|[1-9][0-9]{0,2})$/) {
        print "no"
    } else {
        print "error"
    }
}' nowcoder.txt

另一位同学题解中no的情况判断有误,这里改成0.0.0.0-999.999.999.999