130920-grep

 Linuxのgrepコマンドで検索文字列の先頭にハイフン(「-」)がある場合の検索方法を下記にメモ代わりとして明記しておきます。

 LinuxのCUI(Character-based User Interface:Windowsのコマンドプロンプトのようなもの)でファイル内の文字列を検索するのに「grep」コマンドをよく利用します。

 そのgrepコマンドでハイフンから始まる文字列を検索しようとすると

[~] grep -r ‘-hoge’ /var/www/html/app/
grep: invalid option — ‘g’
Usage: grep [OPTION]… PATTERN [FILE]…
Try `grep –help’ for more information.

と表示されます。日本語表示にしていると

[~] grep -r ‘-hoge’ /var/www/html/app/
grep: オプションが違います — ‘g’
使用法: grep [オプション]‥‥ 文字列パターン [ファイル]‥‥
詳しくは`grep –help’を実行してください。

です。検索する文字列の途中にハイフンがある場合(「hoge-fuge」など)は特に問題はないのですが、先頭にハイフンがあると、上記のようなエラーが表示されます。

 では先頭にハイフンがある文字列は検索できないのかというと、方法はありました。その方法は3つです。

  • オプションにダブルハイフン(「--」)をつける(都合上、ハイフンは全角で明記しています)
    例:[~] grep -r -- ‘-hoge’ /var/www/html/app/
  • オプションに「-e」をつける
    例:[~] grep -r -e ‘-hoge’ /var/www/html/app/
  • 検索文字列に「\」のエスケープ文字をつける
    例:[~] grep -r ‘\-hoge’ /var/www/html/app/

 方法としてはこの3つがあるようです。こういうのって知らないと困っちゃいますね(^^ゞ