Awk:不报告202D, 203B等错误,它接受一个alpha字符



我需要找出以管道分隔的文件中的字段是否为数字。我需要报告如果字段不是一个数字字段,忽略如果它是数字如果它为空,也可以忽略。我有其他的计算。

我写了下面的代码:

gawk -v w_column_pos="$column_pos" -F "|" '
$w_column_pos !~ /^([+-]|[0-9])[0-9]*(.[0-9]*)$|^([+-]|[0-9])[0-9]*$|^$/ { print $w_column_pos," is not Numeric"; } ' $src_data_file

w_column_pos="$column_pos"用于获取列号

问题是,它不报告错误的202D, 203B等;它接受一个alpha字符

202DD报告错误。

我之前有/^([+-]|[0-9])[0-9]*(.[0-9]*)?$|^$/;

Sample input file
Name|Designation|Is Employee| Organisation ID|Hire Date
Alex Conolly|Prof1|TrUE|100|12072015
Thomas |Prof2|TRUE|200B|09072016
Christine prof1|FALSE||24902007
John Martini|PPP|TRUE~FALSE|202|11782099
xxYY |PPP|TRUE|91.67|11782099
ABD S | XXX | FALSEx | 209|11093000
I am asking about 4th column: Organisation id which is a number type
My code works fine, but 200B(in the 3rd row) is not reported

将图案改为:

/^([+-]|[0-9])[0-9]*([.][0-9]*)$|^([+-]|[0-9])[0-9]*$|^$/

未保护的"。"与"B"匹配

最新更新