Unix のコマンドの一つ。
複数のファイルから正規表現を用いて文字列を検索する機能を提供する。 grep の名の由来はラインエディタ ed のコマンドの g/RE/p で、正規表現 RE(RegExp) にマッチする全ての行(global)を表示(print)するというところから来ている。
現在は Unix のコマンド名に留まらず、文字列検索ツールの名前や、テキストエディタの検索機能の名前としても grep という名前が使われることもある(秀丸エディタの grep 機能など)。
結論、以下だけを覚えておけば実務OK。 grep 意味 直前文字の0回以上繰り返し 例 ab* 以下、ChatGPT回答まま glob(find の -name などで使うパターン)と、grep(正規表現)では、記号の扱いがかなり違います。 ご質問の 4つ(* . - /) を整理するとこうなります。 1. 両方で「基本的に気にしなくてよい」もの /(スラッシュ) glob:普通の文字(ただしパス区切りなので * が跨げない) grep:普通の文字 例 find . -name "a/b" # 普通の文字として扱われる grep "a/b" file 👉 エスケープ不要 ※ただし glob で…
Linuxのgrepコマンドで正規表現検索するときは、私はいつも「-E」オプションを付けています。このオプションを付けないと基本正規表現(BRE)での検索がされるところ、「-E」オプションを付けることで拡張正規表現(ERE)での検索ができるようになるからです。 そうしたところ、今日、図書館でたまたま立ち読みした本の中から、有益な情報を得ました。立ち読みした本というのは、「エンジニア1年生のためのLinuxコマンドの教科書」です。その157ページ以下に、次のように書かれていました。 正規表現には、POSIXで規定されているもののほかに、「PCRE」(Perl Compatible Regular…
grep(正規表現)と find(glob パターン)は、似ているようで根本の思想がまったく違うので、混乱しやすいんですよね。整理の軸を持っておくと一気にスッキリします。 覚えておくと錯綜しない 5 つのポイント 1. grep は「文字列にマッチ」・find は「ファイル名にマッチ」 grep:ファイルの中身のテキストに対して正規表現を使う find:ファイル名やパスに対して glob(ワイルドカード)を使う → そもそも対象が違うので、同じ書き方をしても意味が変わる 2. 正規表現は「文字のパターン」・glob は「ファイル名のパターン」 正規表現:.*, +, ?, [], () など豊…
いいテーマですね。ここを一度整理すると、grep/findまわりの混乱が一気に減ります。 「正規表現 vs glob」を軸に、これだけ覚えれば事故らない5点に絞ります。 ① 「誰が解釈するか」をまず疑う 一番大事。9割の混乱はここ。 glob: 👉 シェル(bashなど)が先に解釈 正規表現: 👉 grep / sed / awk / find -regex などのコマンドが解釈 grep foo *.c *.c → シェルのglob foo → grepの正規表現 👉 「その記号、シェル? コマンド?」と自問する癖をつける ② * は「似てるけど別物」 見た目が同じで、意味が違う代表格。 文…
grep(正規表現)とfind(ワイルドカード/Glob)の使い分け、本当にややこしいですよね。「どっちで * を使えばいいんだっけ?」と混乱するのは、Linuxユーザーなら誰もが通る道です。 この2つの「似て非なるルール」を整理して、脳内のフォルダをスッキリさせるための5つのポイントをまとめました。 1. 「対象」が違う:名前を探すか、中身を探すか まず、ツールとしての目的を明確に分けましょう。 find (Glob): ファイルそのもの(箱)を探すためのもの。 例:「.txt という名前のファイルはどこ?」 grep (正規表現): ファイルの中身(中身のテキスト)を探すためのもの。 例:…
今回は文字列検索コマンドの「grep」をご紹介します。 と言っても先人がわかりやすく解説したサイトは星の数ほどあるので、今回は非常にわかりやすい以下の記事から紹介はされたけど詳細に解説されていないオプションについて解説したいと思います。 academy.gmocloud.com まずgrepとはなんぞや?となるので簡単に言うと特定のファイルから特定の文字列があるかどうか検索してお知らせするコマンドです。 例えば以下のような内容のsample1.txtという名前のファイルがあったとします。 red blue yellow black white pink ここにgrepコマンドを使うと以下のよう…
Table of contents Table of contents Command Format Option List Target File Basic Use Case Simple Use Case 正規表現 (-E) 行全体の完全一致 (-x) 特定の文字を排除して出力 (-v) 大文字/小文字を区別せずに検索 (-i) パターンにマッチしたもののみを出力 (-o) 結果にファイル名も表示 (-H) 一致するもののカウントのみ表示 (-c) 一致するものの前後1行も併せて表示 (-C) マッチしたファイル名のみ表示 (-l) マッチしていないファイル名のみ表示 (-L) 行番号を…
ランキング参加中Linuxランキング参加中プログラミングgrepで検索した結果の行数を数えるとき grep hoge *.log | wc -l みたいなことやってたけど、もっとスマートな -c オプションがあった $ grep -c hoge *.log 2025.12.01.log:15 2025.12.02.log:0 2025.12.03.log:2331 2025.12.04.log:0 はかどる ja.manpages.org
① 概要 grep は、入力データから指定したパターンに一致する行を抽出するコマンドである。 ファイル指定時だけでなく、標準入力から与えられたデータも処理対象とし、 入力元に依存しない共通の処理モデルを持つ。 ② 主要オプション -f : 検索パターンをファイルから読み込む -F : 固定文字列として検索する -E : 拡張正規表現を使用する -c : マッチした行数を表示する -q : 出力を行わず、終了コードのみ返す -m X : X 回マッチした時点で処理を終了する -A X : マッチした行の後 X 行を表示 -B X : マッチした行の前 X 行を表示 -C X : マッチした行の前…
鍛え抜かれたコマンドーの皆さんならgrepコマンドを使わない日はないでしょう。私も文字列の絞り込みによく使っています。 決まった文字列で絞り込む場合はgrepで十分だと思いますが、絞り込む文字列を探している段階ではgrepの結果を見ながらcat | grep cat | grep cat | grep ... とひたすらに繰り返すことになります。これがちょっと面倒で。 そんな時に使えるのがsigというツールです。 sig github.com コマンドの実行結果をインタラクティブに正規表現で絞り込みます。 使い方は簡単で、通常のgrepのように標準入力からデータを受け取るストリーミングモードと…