次のようなクラスが与えられた場合
[:digit:]
出力を
0123456789
このメソッドは、すべての POSIX 文字クラスで機能するはずです。これが私が試したことです
$ printf %s '[:digit:]'
[:digit:]
次のようなクラスが与えられた場合
[:digit:]
出力を
0123456789
このメソッドは、すべての POSIX 文字クラスで機能するはずです。これが私が試したことです
$ printf %s '[:digit:]'
[:digit:]
もっと良い方法があると思いますが、力ずくの方法を次に示します。
for i in {0..127}; do
char=$(printf \\$(printf '%03o' "$i"))
[[ $char =~ [[:alpha:]] ]] && echo "$char"
done
すべての 10 進文字値をループし、それらを対応する ASCII 文字に変換して、文字クラスに対してテストします。
範囲が間違っている可能性がありますが、チェックは機能しているようです。
他の人がコメントで述べたように、この場合==
の代わりに演算子を使用することもでき=~
ます。これは少し速いかもしれません。
$ seq 126 | awk '{printf "%c", $0}' | grep -o '[[:digit:]]'
0
1
2
3
4
5
6
7
8
9