【问题标题】:AWK determine if all characters in a string are identical?AWK确定字符串中的所有字符是否相同?
【发布时间】:2017-08-12 09:36:52
【问题描述】:

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

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

【问题讨论】:

    标签: string awk


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      另一种awk 方法

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

      【讨论】:

        【解决方案3】:

        所有相同的字符:

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

        至少一个不同的字符:

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

        【讨论】:

          猜你喜欢
          • 2013-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-11
          • 2017-12-13
          • 1970-01-01
          相关资源
          最近更新 更多