2015-08-27 84 views
1

我试图匹配字符串中的重复模式。我知道我至少可以在perl中使用/^[0-9]{5}$/ ,但这似乎在awk或nawk(没有安装gawk)时不起作用。重复字符的awk正则表达式

/^[0-9][0-9][0-9][0-9][0-9]$/之外的任何替代方法?

编辑:

echo "AAB" > test 

script.awk:

#!/usr/bin/nawk -f 
BEGIN {} 
/^A\{2,2\}/ { print "1"; } 
/^A/ { print "2"; } 
/A\{2,2\}/ { print "3"; } 
/A{2,2}/ { print "4"; } 
END {} 

./script.awk test 

仅输出(AWK或nauk):

2 
+0

使用反斜杠 - >'/^[0-9] \ {5 \} $ /'转义'{'和'}'。这适用于我的awk 4.1.1 – bro

+2

您使用的是什么系统?第一种语法应该由'nawk'支持。 –

+0

SunOS 5.10/Solaris 10转义{对它没有帮助。 – vesperto

回答

1

上Solaris,默认AWK是旧的,破awk,任何人都不应该因为任何原因使用awk。 nawk比/ usr/bin/awk好得多,但仍旧是一个非常旧的非POSIX awk,因此不支持RE间隔。几乎任何其他awk都可以工作。在Solaris上,如果你没有并且不能安装GNU awk,那么使用/ usr/xpg4/bin/awk,因为它非常接近符合POSIX的标准,并且支持RE间隔。