我想在shell脚本中使用Regex检查文本文件中是否有特殊字符。 假设有句子“assccÑasas” 如何检查线内是否有'Ñ',所以应该输出为错误。 我还想检查是否有'/'或'^'或'&'等符号
我的代码:
VALID='^[a-zA-Z_0-9&.<>/|\-]+$' #myregex
checkError(){
if [[ $line =~ $VALID ]]; then
echo "tes"
else
echo "not okay"
exit 1
fi
}
while read line
do
checkRusak
done < $1
所以这个例子就好像有句“StÀckOpflow;”那么它会输出错误。如果有句子“堆栈溢出;”仍然输出错误。 但如果只是“堆栈溢出”(没有符号或特殊字符),它将输出“test”
到目前为止,它可以检查符号('/'或'\'等),但仍然存在特殊字符问题。
任何帮助真的很感激, 提前谢谢你
答案 0 :(得分:0)
你可以
定义哪些字符有效且仅允许这些或
定义哪些字符无效并检查是否有
对于第二种方法,您可以使用此正则表达式:[^a-zA-Z_0-9\s]
。
方括号内的^
否定字符类,因此它匹配任何字符串,其中包含不字母A-Z
的字符,{{1数字,下划线或空格。
由于您想要检测单个字符,因此不需要量词。