2017-03-20 82 views
0

我想确定一个字符串中的所有字符在AWK中是否相同。这是我现在的代码,但必须有一个更简洁的方式,不是吗?AWK确定字符串中的所有字符是否相同?

same = 1; 
for (i = 1; i < length(s); i++) 
     if (substr(s, i, 1) != substr(s, i+1, 1)) 
      same = 0; 

回答

0

你可以使用一个regular expression匹配操作:

Pattern="^" substr(s, 1, 1) "+$" 
    if (s ~ Pattern) print "match!" 

匹配图案读取:“匹配这样的一个或多个字符等于s的从开始到结束的第一个字符的任意字符串” 。

0

另一awk方法

awk '{line=$0; 
     print length(line)==gsub(substr(line,1,1),"",line)}' 
0

所有相同的字符:

awk '$0 !~ "[^"substr($0,1,1)"]"' 
awk '$0 ~ "^"substr($0,1,1)"+$"' 

至少一个不同的角色:

awk '$0 ~ "[^"substr($0,1,1)"]"' 
awk '$0 !~ "^"substr($0,1,1)"+$"' 
相关问题