grep -wオプション|単語単位で検索する使い方を初心者向けに解説!
生徒
「Linuxで特定の単語だけを検索したいんですが、他の単語に紛れて見つけにくいです…」
先生
「そんなときは、grepコマンドの-wオプションを使えば、完全に一致する単語だけを検索できますよ。」
生徒
「部分一致じゃなくて、本当にその単語だけ見つけてくれるんですか?」
先生
「はい!それでは、grep -wオプションの使い方を一緒に学んでいきましょう。」
1. grepコマンドとは?
grep(グレップ)コマンドは、Linuxでテキストファイルの中から特定の文字列を探すためのコマンドです。たとえば、「りんご」という言葉を含む行を検索したいときに使います。
基本的な使い方は以下の通りです:
grep 検索したい文字列 ファイル名
しかし、通常のgrepは部分一致で検索するため、「りんご」で検索すると「りんごジュース」や「青りんご」もヒットしてしまいます。
2. -wオプションとは?単語単位で検索する方法
-wオプションは、検索したい文字列と完全に一致する単語だけを見つけるためのオプションです。
たとえば「apple」という単語だけを探したい場合、grep -w appleと書くことで、「pineapple(パイナップル)」のように中に「apple」が含まれる単語は除外されます。
実際のコマンド例を見てみましょう。
cat fruits.txt
apple
pineapple
green apple
redapple
apple pie
では、grepで「apple」を検索してみます:
grep apple fruits.txt
apple
pineapple
green apple
redapple
apple pie
このように、部分一致なので「pineapple」「green apple」「redapple」などもヒットしています。
次に-wオプションを使ってみましょう:
grep -w apple fruits.txt
apple
green apple
apple pie
今度は、「apple」という独立した単語として出現している行だけが抽出されています。「pineapple」や「redapple」は無視されました。
3. 単語ってどうやって判定されるの?
Linuxのgrep -wコマンドでは、スペースや記号で区切られた単語を「1つの単語」として判断します。
たとえば、「This is a pen」という文があれば、「pen」は独立した単語ですが、「penholder」は違います。
そのため、以下のように入力すると:
echo "This is a penholder and a pen." | grep -w pen
penholder and a pen.
このように「pen」という単語が含まれる部分だけがヒットします。文章の中にあるpenholderは無視されるので、正確な結果が得られます。
4. よく使う組み合わせ:-i(大文字小文字を区別しない)
-wは単語単位で検索できますが、単語の大文字小文字を区別してしまいます。たとえば「Apple」と「apple」は違うと判断されてしまいます。
そんなときは、-iオプションを一緒に使いましょう。
grep -wi apple fruits.txt
apple
green apple
apple pie
このように、-wと-iを組み合わせることで、単語単位かつ大文字小文字を無視して検索できます。
5. grep -wと他のコマンドとの違い
grepは柔軟な検索ができる便利なコマンドですが、部分一致が基本です。
それに対して、grep -wは完全一致(単語単位)を行うため、検索精度が高く、誤ヒットを防げます。
ちなみに、他にも似たコマンドにawkやsedがありますが、grep -wはもっとも簡単で初心者向けです。
6. 応用編:複数の単語を検索する方法
複数の単語を検索したい場合は、-Eオプション(拡張正規表現)を使って、パイプ(|)で区切ります。
grep -wE "apple|orange" fruits.txt
apple
green apple
apple pie
orange
このように、appleまたはorangeが完全一致する行だけを抜き出せます。