我想确定一个字符串中的所有字符在AWK中是否相同。这是我现在的代码,但必须有一个更简洁的方式,不是吗?AWK确定字符串中的所有字符是否相同?
same = 1;
for (i = 1; i < length(s); i++)
if (substr(s, i, 1) != substr(s, i+1, 1))
same = 0;
我想确定一个字符串中的所有字符在AWK中是否相同。这是我现在的代码,但必须有一个更简洁的方式,不是吗?AWK确定字符串中的所有字符是否相同?
same = 1;
for (i = 1; i < length(s); i++)
if (substr(s, i, 1) != substr(s, i+1, 1))
same = 0;
你可以使用一个regular expression匹配操作:
Pattern="^" substr(s, 1, 1) "+$"
if (s ~ Pattern) print "match!"
匹配图案读取:“匹配这样的一个或多个字符等于s的从开始到结束的第一个字符的任意字符串” 。
另一awk
方法
awk '{line=$0;
print length(line)==gsub(substr(line,1,1),"",line)}'
所有相同的字符:
awk '$0 !~ "[^"substr($0,1,1)"]"'
awk '$0 ~ "^"substr($0,1,1)"+$"'
至少一个不同的角色:
awk '$0 ~ "[^"substr($0,1,1)"]"'
awk '$0 !~ "^"substr($0,1,1)"+$"'