if grep -q "_" "${changefile}"; then
fail
printf "\nUnderscores are invalid in hostnames\n" >&2
exit 1
fi
如果DNS配置文件包含下划线,我会将此代码段作为检查DNS配置文件的方法。无效的角色。如果是这样,它会崩溃。
我需要重写它,以便检查是否有任何主机名包含无效字符。主机名位于第27-350行。
我的想法的逻辑围绕着:"如果grep -q" $ {changefile}"第27到350行返回任何无效字符;抱怨并退出" 。只是不确定如何编码。
引用微软的网站,主机名必须满足仅限字符的事实:
的范围是' A-Z',' a-z',' 0-9','。'和' - '使用。
答案 0 :(得分:0)
$ awk '27<=NR && NR<=350 && !/A-Za-z0-9.-/{f=1;
print "invalid chars at line:" NR,$0; exit}
END{exit f}' file
这将在第一次失败后退出,或者您可以验证所有行并报告所有行失败(为此删除第一个块中的exit
。
答案 1 :(得分:0)
你没有给出足够的线条。
你可以试试这个sed
sed '
27,350!bA
/_/!d
s/.*/& --> invalid line : contain _/
q
:A
$s/.*/no problem/p
d' infile