文字列内のすべての文字が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!"
マッチパターンを読み取ります。「一個の以上の文字の開始から終了までの秒の最初の文字に等しいから構成され、任意の文字列に一致します」 。
別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)"+$"'
少なくとも1つの異なる文字:
awk '$0 ~ "[^"substr($0,1,1)"]"'
awk '$0 !~ "^"substr($0,1,1)"+$"'