web-dev-qa-db-ja.com

grepで空白を処理する

grepの空白を処理する方法を理解しようとしています。空白やタブを含む文字列を検索するようにgrepに指示するにはどうすればよいですか?マニュアルには何も書かれていません。 \sは空白で機能するようで、\Sは非空白で機能するようですが、すべての空白文字(スペースとタブ)が含まれているため、角かっこで囲んで処理すると機能しません。バックスラッシュと\sを別々の文字として。

4
MYV

よろしいですか?

$ printf "a \tb\na b\na\tb" | grep '.\s*.'
a       b
a b
a       b

$ grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.

つまり、示されているように、\sはスペースとタブの両方に一致しました-強調するために「a」と「b」を含めました。

何を手に入れますか?

5
xpt

私の経験では、grepはPOSIX文字クラスで最適に機能します。たとえば[[:space:]]を検索します。一部のプログラムではユーザー入力の検証のためにgrepを幅広く使用しており、POSIXクラスにこだわっていても問題はありませんでした。

しかし、コメンターが指摘したように、あなたの質問は完全に明確ではありません。

4
ShankarG