我目前正在使用awk编码CSV验证器。这是代码示例:
awk 'BEGIN{FS=OFS=","} NF!=17{print "not enough fields"; exit}
!($1~/[[:alnum:]]$/) {print "1st field invalid"; exit}' npp_test.cs
但是alnum
部分将不接受字母和数字字符。
因此,如果数据为“ t”,则程序将退出,而如果数据为“ 1”,则相同。但是,如果它是“ t1”,它将不会识别为有效。 我将如何使代码接受字母和数字数据的混合。
此外,最上面一行与实际字段数无关,实际上并不相关:)
答案 0 :(得分:0)
如果您的环境在awk
中不支持POSIX字符类,则可以在方括号表达式中使用显式字符范围:
!($1 ~ /^[A-Z0-9]{1,25}$/)
在这里
^
-匹配一行的开头[A-Z0-9]{1,25}
-匹配1至25个大写字母或数字$
-字符串的结尾。注意:为避免排序规则出现任何问题,可以在LANG=C
命令之前添加awk
。