匹配[g] awk中的数字

时间:2013-04-18 16:17:56

标签: regex awk posix-ere

我很难过!尝试编写一个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个数字。

3 个答案:

答案 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)

Doh - 忘记了RTM:

              Interval expressions are only available if either --posix or
              --re-interval is specified on the command line.