AWK确定字符串中的所有字符是否相同?

时间:2017-03-20 22:13:36

标签: string awk

我正在尝试确定字符串中的所有字符在AWK中是否相同。这是我目前的代码,但必须有一个更简洁的方法,不是吗?

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

3 个答案:

答案 0 :(得分:0)

您可以使用regular expression匹配操作:

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

匹配模式显示:“匹配任何由一个或多个字符组成的字符串,该字符从头到尾等于s的第一个字符”。

答案 1 :(得分:0)

另一种awk方法

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

答案 2 :(得分: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)"+$"'