Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

文字列クラスで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ストリーム・エディタなら何でもいけそうですね。
こりゃ捗るぜ...ッ