Awk:不报告 202D、203B 等错误,它接受一个字母字符
Awk : does not report error for 202D, 203B etc, it accepts one alpha character
我需要查明竖线分隔文件中的字段是否为数字。
如果字段不是数字字段我需要报告,如果是数字则忽略
如果它为空,也忽略。
我还有其他计算。
我写了这段代码:
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
等不报错;它接受一个字母字符。
但它确实报告 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".
我需要查明竖线分隔文件中的字段是否为数字。 如果字段不是数字字段我需要报告,如果是数字则忽略 如果它为空,也忽略。 我还有其他计算。
我写了这段代码:
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
等不报错;它接受一个字母字符。
但它确实报告 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".