Regex 匹配[g]awk中的数字
我被难住了!试图编写一个awk正则表达式,使字符串与11位数字匹配 我试过:Regex 匹配[g]awk中的数字,regex,awk,posix-ere,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]+/ )
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位数字。Doh-忘记RTM:
Interval expressions are only available if either --posix or
--re-interval is specified on the command line.
如果您正试图在字符串中的某个位置精确匹配11个连续数字: 使用测试文件:
hi12345678910
hi1234
awk命令行的windows版本:
awk --posix "{ if ($1 ~ /[0-9]{11}/) print}" testfile.txt
它印刷了:
hi12345678910
您描述了您的问题,但没有告诉我们您的awk版本。这是一个重要的信息 但这可能适用于您的情况:
if (var ~ /^[0-9]+$/ && length(var)==11)
如果我们知道版本,可能会有更简单的解决方案。如果您只需要regexp interval并拥有旧版本的gawk,请使用--re interval而不是--posix,因为后者会禁用所有gawk扩展,如gensub(),等等。这仅适用于旧版本的gawk。获取最新版本,默认情况下会启用重新间隔。您使用的是哪种awk(gawk vs nawk vs/usr/xpg4/bin/awk vs?那个awk的哪个版本(awk--版本)?