grep
の空白を処理する方法を理解しようとしています。空白やタブを含む文字列を検索するようにgrep
に指示するにはどうすればよいですか?マニュアルには何も書かれていません。 \s
は空白で機能するようで、\S
は非空白で機能するようですが、すべての空白文字(スペースとタブ)が含まれているため、角かっこで囲んで処理すると機能しません。バックスラッシュと\s
を別々の文字として。
よろしいですか?
$ 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」を含めました。
何を手に入れますか?
私の経験では、grepはPOSIX文字クラスで最適に機能します。たとえば[[:space:]]を検索します。一部のプログラムではユーザー入力の検証のためにgrepを幅広く使用しており、POSIXクラスにこだわっていても問題はありませんでした。
しかし、コメンターが指摘したように、あなたの質問は完全に明確ではありません。