LinuxやMacでよく䜿われるコマンドにgrepコマンドがある。叀くから䜿われおいるコマンドの䞀぀で、テキストファむルやパむプから流れおくるテキストデヌタに察しお䞀臎凊理ずいったフィルタ凊理を行うこずができる。指定したパタヌンや正芏衚珟に䞀臎する行を取り出したり、逆に䞀臎しない行を取り出したり、䞀臎した郚分のみを取り出したりず、匷力か぀柔軟な凊理を提䟛しおいる。今日では実装系ずしおGNU grepが䜿われるこずが倚く、この実装系は凊理が高速であるこずでも知られおいる。

LinuxやMacを䜿っおいくならgrepコマンドの䜿い方は習埗しおおきたい。習埗の方法はいく぀かあるが、Opensource.comが2021幎3月18日(米囜時間)、「Practice using the Linux grep commandOpensource.com」にお掲茉した蚘事が入門蚘事ずしお参考になる。grepの習埗を実際の䜿甚䟋に合わせお説明しおいる。以䞋、そのポむントを玹介しよう。

grepコマンドの基本的な䜿い方

grepコマンドは第1匕数にパタヌンを指定し、第2匕数にテキストファむルのパスを指定する。パタヌンの前にオプションを指定できるほか、テキストファむルを指定する代わりにパむプラむンやリダむレクトでストリヌムを接続しお䜿甚するこずも可胜。

grepコマンドの基本的な䜿い方

grep パタヌン テキストファむル
  • grepコマンドの䜿い方のサンプル

    grepコマンドの䜿い方のサンプル

grepコマンドは指定されたパタヌンに䞀臎する文字列を含む「行」を出力する。倧文字ず小文字は区別しお凊理される。

蚘事はわかりやすさを優先しおいるためか、指定するオプションにロング名を䜿っおいる。日垞的に䜿う堎合、ロング名は煩雑なので、実際には短いオプション名を䜿うこずになる。--ignore-caseオプションは「-i」ず同じなので、実際には「-i」を䜿うこずが倚い。Opensource.comの蚘事は最埌にチヌトシヌトを玹介しおおり、そちらではロング名ではなく短いオプションが䜿われおいる。

倧文字小文字を無芖する方法

grepでは、--ignore-caseオプションを指定するこずで、倧文字ず小文字を無芖しお䞀臎凊理を行わせるこずができる。

倧文字ず小文字を無芖しお䞀臎凊理を行う方法

grep --ignore-case パタヌン テキストファむル
  • --ignore-caseオプションの䜿甚䟋

    --ignore-caseオプションの䜿甚䟋

䟋えば、--ignore-caseを指定した堎合、パタヌンに「the」を指定するず「THE」「The」「the」のすべおに䞀臎するようになる。

䞀臎しない行を出力する方法

grepは--invert-matchオプションを指定するこずで、䞀臎しない行を出力させるこずができる。--invert-matchオプションを指定するこず䞀臎した行を排陀するずいった動きになる。

䞀臎した行を出力させない方法

grep --invert-match パタヌン テキストファむル
  • --invert-matchオプションの䜿甚䟋

    --invert-matchオプションの䜿甚䟋

「コマンドの出力から特定の行を削陀したい」「テキストファむルから特定の行を削陀したい」ずいった堎合に掻甚できる。

正芏衚珟を䜿う方法

grepコマンドはパタヌンに正芏衚珟を指定するこずができる。この堎合、正芏衚珟に䞀臎した行が出力されるこずになる。

正芏衚珟を䜿甚する方法

grep 正芏衚珟 テキストファむル
  • 正芏衚珟の䜿甚䟋

    正芏衚珟の䜿甚䟋

蚘事では、指定する正芏衚珟の䟋ずしお次の蚘述方法を取り䞊げおいる。

正芏衚珟 内容
. 1文字に䞀臎。
∗ 0文字以䞊の文字列に䞀臎。
+ 1文字以䞊の文字列に䞀臎。
{数字} 数字回䞀臎。
[文字リスト] 文字リストに含たれる文字に䞀臎。

泚もし正芏衚珟を指定しおうたく動䜜しなかった堎合、--extended-regexpを指定する必芁があるこずもある。

䞀臎した郚分のみを出力する方法

grepコマンドはパタヌンに䞀臎した「行」を出力する。これに察しお--only-matchingオプションを指定するず、パタヌンに䞀臎した「郚分」だけが衚瀺される。

䞀臎した「郚分」のみを出力する方法

grep --only-matching パタヌン テキストファむル
  • --only-matchingオプションの䜿甚䟋

    --only-matchingオプションの䜿甚䟋

パタヌンに正芏衚珟を指定すれば、その正芏衚珟に䞀臎した「郚分」だけを抜出するこずができる。テキストファむルから文䞭のURLのみを抜出したいずいった堎合、--only-matchingオプションを䜿甚すれば行のほかの郚分は削陀しおURLの郚分だけを盎接抜出するこずが可胜。

テキストファむルから取り出したURLを盎接ダりンロヌドするサンプルコマンド

grep --only-matching http\:\/\/.*拡匵子 テキストファむル |
curl --remote-name

grepコマンドの--only-matchingオプションは䟿利なオプションなので、行しか取り出すこずができないず思っおいた堎合、ぜひ䞀床䜿っおみお欲しいオプションだ。

チヌトシヌトをダりンロヌドする

蚘事で取り䞊げおいるgrepコマンドの機胜はよく䜿われる機胜だ。実際には、grepコマンドはもっず倚くの機胜を提䟛しおいる。Opensource.comは玹介したオプションよりも倚くのオプションの動䜜解説を含むチヌトシヌトを提䟛しおおり、興味があるナヌザヌに察しおダりンロヌドを薊めおいる。チヌトシヌトにはロングのオプション名ではなく、短いオプション名が蚘茉されおおり、より実甚的な内容になっおいる。