正規表現のキャラクタクラスで空白文字やスペースを表す方法を紹介します。
空白文字(スペースやタブ)は、[:blank:] で表します。
スペース、タブ、改ページは、[:space:] で表します。
[:blank:]と[:space:]の違いですが「info grep」コマンドの結果に記述があります。
[:blank:]ですが上述の通り、スペースとタブが該当します。
1 2 |
`[:blank:]' Blank characters: space and tab. |
[:space:]は以下のように少し複雑になっています。
1 2 3 4 |
`[:space:]' Space characters: in the `C' locale, this is tab, newline, vertical tab, form feed, carriage return, and space. *Note Usage::, for more discussion of matching newlines. |
sed等で使用する場合、[[:blank:]]のようにする必要があるので注意してください。
例を見てみましょう。
まずは、kamoと123の間にスペースが1つ、123とTORAの間にスペースが2つある場合に、[:blank:]を使って@マークに変えてみます。
1 2 3 |
$ echo "kamo 123 TORA" | sed "s/[[:blank:]]/@/g" kamo@123@@TORA $ |
1つのスペースが@に、2つのスペースも@マーク2つに変わりました。
同じく、[:space:]を使ってみます。
1 2 3 |
$ echo kamo 123 TORA | sed "s/[[:space:]]/@/g" kamo@123@TORA $ |
1つのスペースが@に、2つのスペースが@マーク1つに変わりました。