Linux での grep コマンドの使い方の詳細な説明

Linux での grep コマンドの使い方の詳細な説明

1. 公式紹介

grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対して繰り返し検索タスクを実行するために使用される Unix ツールです。grep コマンドを使用して特定の検索条件を指定し、ファイルとその内容を検索して有用な情報を取得できます。

使用方法: grep [オプション]... パターン [ファイル]...
各 FILE または標準入力で PATTERN を検索します。
PATTERN は、デフォルトでは基本正規表現 (BRE) です。
例: grep -i 'hello world' menu.h main.c

正規表現の選択と解釈:
 -E, --extended-regexp PATTERN は拡張正規表現 (ERE) です
 -F, --fixed-strings PATTERNは改行で区切られた固定文字列のセットです
 -G, --basic-regexp PATTERNは基本正規表現(BRE)です
 -P, --perl-regexp PATTERNはPerl正規表現です
 -e, --regexp=PATTERN マッチングにパターンを使用する
 -f, --file=FILE FILEからPATTERNを取得する
 -i, --ignore-case 大文字と小文字の区別を無視する
 -w, --word-regexp パターンが単語全体に一致するように強制する
 -x, --line-regexp パターンが行全体に一致するように強制する
 -z, --null-data データ行は改行ではなく 0 バイトで終わります

その他:
 -s, --no-messages エラーメッセージを抑制します
 -v, --invert-match 一致しない行を選択
 -V, --version バージョン情報を表示して終了する
  --help このヘルプテキストを表示して終了します

出力制御:
 -m, --max-count=NUM NUM マッチしたら停止する
 -b, --byte-offset 出力行にバイトオフセットを印刷します
 -n, --line-number 出力行に行番号を印刷する
  --line-buffered 出力を各行ごとにフラッシュする
 -H, --with-filename 一致するファイル名を出力します
 -h, --no-filename 出力時にファイル名のプレフィックスを抑制します
  --label=LABEL 標準入力ファイル名のプレフィックスとして LABEL を使用する
 -o, --only-matching パターンに一致する行の部分のみを表示します
 -q、--quiet、--silent は通常の出力をすべて抑制します
  --binary-files=TYPE はバイナリファイルが TYPE であると想定します。
       TYPE は「バイナリ」、「テキスト」、または「一致なし」です
 -a, --text は --binary-files=text と同等です
 -I は --binary-files=without-match と同等です
 -d, --directories=ACTION ディレクトリの処理方法。
       アクションは「読み取り」、「再帰」、または「スキップ」です
 -D, --devices=ACTION デバイス、FIFO、ソケットの処理方法。
       アクションは「読む」または「スキップ」です
 -r、--recursive は --directories=recurse と同様
 -R, --dereference-recursive
       同様に、すべてのシンボリックリンクをたどります
  --include=ファイルパターン
       FILE_PATTERNに一致するファイルのみを検索
  --exclude=ファイルパターン
       FILE_PATTERNに一致するファイルとディレクトリをスキップする
  --exclude-from=FILE FILE内の任意のファイルパターンに一致するファイルをスキップする
  --exclude-dir=PATTERN に一致するディレクトリはスキップされます。
 -L, --files-without-match 一致するものを含まないファイル名のみを出力します
 -l, --files-with-matches は一致するものを含むファイル名のみを出力します
 -c, --count ファイルごとに一致する行数のみを出力します
 -T, --initial-tab タブを揃える(必要な場合)
 -Z, --null ファイル名の後に0バイトを出力

コンテキスト制御:
 -B, --before-context=NUM 先頭のコンテキストの NUM 行を印刷します
 -A, --after-context=NUM 末尾のコンテキストのNUM行を印刷します
 -C, --context=NUM 出力コンテキストのNUM行を印刷します
 -NUM は --context=NUM と同じ
  --group-separator=SEP SEPをグループセパレーターとして使用します
  --no-group-separator グループ区切りとして空の文字列を使用する
  --color[=いつ],
  --colour[=WHEN] マーカーを使用して一致する文字列を強調表示します。
       WHEN は「常に」、「決して」、「自動」のいずれかです
 -U, --binary は EOL で CR 文字を削除しません (MSDOS/Windows)
 -u, --unix-byte-offsets は CR が存在しないかのようにオフセットを報告します
       (MSDOS/Windows)

「egrep」は「grep -E」を意味します。「fgrep」は「grep -F」を意味します。
「egrep」または「fgrep」として直接呼び出すことは非推奨です。
FILEが-のときは標準入力を読み込む。FILEがない場合は、コマンドラインの場合は.を読み込む。
-r が指定されている場合は - 、そうでない場合は - です。2 つ未満の FILE が指定されている場合は -h であると想定します。
いずれかの行が選択された場合は終了ステータスは 0、それ以外の場合は 1 になります。
エラーが発生し、-q が指定されていない場合、終了ステータスは 2 になります。

バグ報告: [email protected]
GNU Grep ホームページ: <http://www.gnu.org/software/grep/>
GNU ソフトウェアの使用に関する一般的なヘルプ: http://www.gnu.org/gethelp/

普段は簡単なデータ校正のためにユーザーデータをチェックするだけですが、最近突然バックグラウンドログの解析依頼を受け、grep が非常に便利だと知りました。

たとえば、バックグラウンド ログはかなり大きいです。サーバーから直接取得すると、時間がかかり、帯域幅を占有します。そのため、解決策としては、grep キーワードを直接使用して、14G から 12M に新しいファイルにリダイレクトし、データをクリーンアップして分析します。

2. 実践的な導入

2.1 grepコマンドを使用して複数のファイル内の複数のテキストを検索する

注: 拡張正規表現を使用するには、egrep コマンドを使用します。

1. 複数のファイル

  • grep 'パターン' ファイル1 ファイル2

2. 複数のテキスト、関係はOR

  • egrep 'パターン1|パターン2' *.py
  • grep -e パターン1 -e パターン2 *.py
  • grep -E 'パターン1|パターン2' *.doc

たとえば、次の例では、ファイル内のキーワード wordA または wordB を抽出します。

grep 'wordA\|wordB' *.py
grep -E 'wordA|wordB' *.doc
grep -e wordA -e wordB *.py
egrep "単語A|単語B" *.c

3. 複数テキストの関係はANDです

ここで直接使用できる [オプション] は表示されないため、パイプ記号 | のみを追加できます。

例えば:

grep -e パターン1 *.py |grep -e パターン2

2.2 完全一致キーワード -w

grep -w '警告\|エラー\|重大' /home/logs

2.3 大文字と小文字を無視するには -i パラメータを使用し、一致する結果を強調表示するには --color を使用します。

egrep -wi --color '警告|エラー|重大' /home/logs

2.4 再帰検索

egrep -Rwi --color '警告|エラー' /home/logs/

Linuxでよく使われるコマンドであるgrepコマンドの詳しい使い方については、これで終わりです。Linuxのgrepコマンドの詳しい説明に関する関連コンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • よく使われる Linux コマンドの完全なリスト (超包括的)
  • よく使用される Linux コマンドの完全なリスト (推奨コレクション)
  • よく使われるLinuxコマンド「ll」が無効、またはコマンドが見つからないという問題を解決します
  • Linux の一般的なコマンド chmod を使用して、ファイルの権限 777 と 754 を変更します。
  • Linux と最もよく使用されるコマンドの紹介 (習得は簡単ですが、問題の 95% 以上を解決できます)
  • Linuxでよく使われるコマンド パフォーマンスコマンド

<<:  sqlとmysqlの違いは何ですか?

>>:  シリアルポート使用時のvue-electronの問題解決

推薦する

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

VMware および CentOS システムのインストール方法 - ルート パスワードをリセットする

今日のタスク1. Linuxディストリビューションの選択2.vmwareが仮想マシン(centos)...

Navicat で MySQL データベースのパスワードを変更する複数の方法

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

MySQL でファイルデータをインポートする際の 1290 エラーの解決方法

エラーシナリオcmd の mysql コマンドを使用して、学生情報テーブルにデータを追加します。デー...

HTMLとCSSを使用して、自分だけの暖かい男「Dabai」を作成します

最終結果はこんな感じです、かわいいでしょう… PS: HTML と CSS の知識があればベストです...

Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する

目次序文一目でわかる建築オペレーティングシステムとの対話シングルスレッドイベント駆動/イベントループ...

Node.js のモジュール性、npm パッケージ マネージャーの説明

目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...

CSS のマージンの崩壊問題を解決する方法

まず、マージン崩壊が発生する 3 つの状況を見てみましょう。 1. 隣接する 2 つのブロックレベル...

HTML の div と span の違い (共通点と相違点)

共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...

Ubuntuのインストール Matlab2020b の詳細なチュートリアルとリソース

目次1. リソースファイル2. インストール2.1 詳細な手順2.1.1 ディスクイメージのマウント...

JSはアニメーションのレイアウト変換を実装します

JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...

GET POSTの違い

1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために...

Tomcatのクラスロードメカニズムを説明する記事

目次- 序文 - - JVM クラスローダー - 1. JVMクラスローダー2. クラスローダーのソ...

CSS3 における擬似クラスの一般的な使用法の詳細な説明

before/after 疑似クラスは、要素内に 2 つの追加タグを挿入するのと同じです。最も適した...

MySQL データベースの制約とデータ テーブルの設計原則

目次1. データベースの制約1.1 はじめに1.2 制約の種類1.3 ヌルでない1.4 ユニーク1....