我很难过!尝试编写一个awk正则表达式来匹配一个字符串与11位数字。
我试过了:
if (var ~ /^[0-9]{11}$/ )
if (var ~ /^([0-9]){11}$/ )
if (var ~ /^([0-9]{11})$/ )
if (var ~ /^[0-9]{11}/ ) # altho I really do need to check the whole str
if (var ~ /[0-9]{11}/ )
如果我使用它......
if (var ~ /^[0-9]+/ )
然后我得到一个匹配 - 但我需要检查正好11个数字。
答案 0 :(得分:2)
您描述了您的问题,但没有告诉我们您的awk版本。这是一个重要的信息。
但这可能适用于您的情况:
if (var ~ /^[0-9]+$/ && length(var)==11)
如果我们知道版本,可能会有更简单的解决方案。
答案 1 :(得分:1)
如果您尝试在字符串中的某个位置匹配完全 11 连续数字:
使用测试文件:
hi12345678910
hi1234
awk命令行的windows版本:
awk --posix "{ if ($1 ~ /[0-9]{11}/) print}" testfile.txt
打印出来:
hi12345678910
答案 2 :(得分:0)
Interval expressions are only available if either --posix or
--re-interval is specified on the command line.