Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

文字列クラスでUNIXストリームエディタの可視性を上げる

文字クラス(Character Class)

Ruby等々では、正規表現で\dと書くと10進数の文字を拾ってくれます。
これらはShorthand Character Classesと呼ばれます。
この元ネタとなったらしいものが、今回紹介する文字列クラスです。

[:alnum:]
英数字 [a-z A-Z 0-9]

[:alpha:]
英字 [a-z A-Z]

[:blank:]
スペースまたはタブ

[:cntrl:]
制御文字

[:digit:]
数字 [0-9]

[:graph:]
表示可能な文字?

[:lower:]
小文字 [a-z]

[:print:]
非制御文字

[:punct:]
句読文字??

! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~.

が該当するそうです。

[:space:]
空白文字

[:upper:]
大文字 [A-Z]

[:xdigit:]
十六進数字 [0-9 a-f A-F]

適用例

以前の記事では訳も分からず、部分的に文字列クラスを適用していましたが...

local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')

これを全部文字列クラスで置き換えると実際スマート!

local s='[[:space:]]*' w='[[:alnum:]_]*' fs=$(echo @|tr @ '\034')

他でも使える

この文字クラスという奴は、実装範囲が広いようで、
確認した範囲ではsedawkgrepで使えます。
GNU準拠なUNIXストリーム・エディタなら何でもいけそうですね。
こりゃ捗るぜ...ッ