grepでハイフンから始まる文字をを検索する方法

たかはらです。今日は小ネタです。

早速ですが質問をさせて下さい。

UNIXのよくつかうコマンドgrep-hogeという文字列を検索したい場合どのようにしますか?

例えば以下のようにしてしまうとどうなるでしょうか?

grep -hoge fuga.txt

この実行結果は以下のようになります。

grep-hyphen.png

残念ながら以下の2案も同じ結果です。

かこってみたり…

grep "-hoge" fuga.txt

エスケープしてみたり…

grep \-hoge fuga.txt

いずれの場合も-hogeがコマンドの引数ではなくオプションとして扱われてしまっていますね。それじゃどうすれば良いのでしょうか?答えを知りたい方は続きをどうぞ!

答え

grep -- -hoge fuga.txt

( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

zoom up

grepに限らずこの単独の”–”がUNIXのほとんどのコマンドで意味を持ちます。

UNIXのコマンドオプションの構文解析には、getopt()というCの標準関数が一般的に使われています。getopt()はコマンドオプションに--を見つけるとオプションの解析を終了します。つまり”–”以降をオプションではなくコマンドの引数とみなすため、-hogeはオプションではなくコマンドの引数として扱われます。

コメント / トラックバックはありません

コメントする