任意の空白を含むパターンのgrep

Tetsuro Aoki 7,400views 更新:2015年4月7日

例えば以下のような内容のファイル(test.txt)から「ALL : ***.***.***.***」の行だけ検索したいとします。

ALL : ***.***.***.***
sshd : ALL

この場合「ALL」だけをパターンとしてgrepすると2行目もヒットしてしまいます。
そこで「ALL :」をパターンとしてgrepすることで1行目だけを検索することとします。
ここで、単純に「ALL」と「:」の間がスペース1つ分ならいいのですが、
場合によってはスペースが複数だったり、tabが使われていたりするかもしれません。
そのような場合にもちゃんとヒットするように検索するには、正規表現の「\s」を使うと便利です。

「\s」は空白文字を表す正規表現です。空白文字とは半角スペースとtab文字のことを指します。
「\s*」とすることで任意幅の空白を表すことができます。

上記の例の場合は、以下のようにgrepすることで「ALL」と「:」の間にどんな空白が入っていてもヒットさせることができます。

grep "ALL\s*:" test.txt

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません