GNU/Linux >> Linux の 問題 >  >> Linux

Linux愛好家のための50の生産的で実用的なgrepコマンド

Linuxおよびその他のUnixライクなシステムのgrepツールは、これまでに開発された中で最も強力なコマンドラインツールの1つです。これは、edコマンドg / re / pにまでさかのぼり、伝説的なKenThompsonによって作成されました。経験豊富なLinuxユーザーであれば、ファイル処理における正規表現の重要性をご存知でしょう。ただし、多くの初心者ユーザーは、単にそれらについての手がかりを持っていません。ユーザーがそのような手法を使用することに不快感を覚えることがよくあります。ただし、ほとんどのgrepコマンドはそれほど複雑ではありません。しばらく時間を与えることで、grepを簡単にマスターできます。 Linuxの第一人者になりたい場合は、このツールを日常のコンピューティングで利用することをお勧めします。

最新のLinuxユーザーに不可欠なgrepコマンド

Linux grepコマンドの最も美しい点の1つは、あらゆる種類のもので使用できることです。パターンをファイル内で直接、または標準出力からgrepできます。これにより、ユーザーは他のコマンドの出力をgrepにパイプして、特定の情報を見つけることができます。次のコマンドは、そのような50のコマンドの概要を示しています。

Linuxgrepコマンドを説明するためのデモファイル

Linux grepユーティリティはファイルで機能するため、練習に使用できるいくつかのファイルの概要を説明しました。ほとんどのLinuxディストリビューションでは、/ usr / share/dictディレクトリにいくつかの辞書ファイルが含まれている必要があります。ここにあるアメリカ英語のファイルを、いくつかのデモンストレーション目的で使用しました。以下を含む簡単なテキストファイルも作成しました。

this is a sample file
it contains a collection

of lines to demonstrate
various Linux grep commands

test.txtという名前を付けました 多くのgrepの例で使用されています。ここからテキストをコピーして、練習に同じファイル名を使用できます。さらに、/ etc/passwdファイルも活用しました。

基本的なgrepの例

grepコマンドを使用すると、ユーザーは多数の組み合わせを使用して情報を掘り下げることができるため、初心者のユーザーはその使用法と混同されることがよくあります。このツールに慣れるために、いくつかの基本的なgrepの例を示します。将来、より高度なコマンドを学ぶのに役立ちます。

1。単一のファイルで情報を探す

Linuxでのgrepの基本的な使用法の1つは、ファイルから特定の情報を含む行を見つけることです。以下に示すように、パターンの後にgrepの後にファイル名を入力するだけです。

---
$ grep root /etc/passwd
$ grep $USER /etc/passwd

最初の例では、/ etc/passwdファイルにrootを含むすべての行が表示されます。 2番目のコマンドは、ユーザー名を含むそのようなすべての行を表示します。

2。複数のファイルで情報を探す

grepを使用して、複数のファイルから特定のパターンを含む行を同時に印刷できます。パターンの後に空白で区切ってすべてのファイル名を指定するだけです。 test.txtをコピーしました 同じ行を含むがtest1.txtという名前の別のファイルを作成しました 。

$ cp test.txt test1.txt
$ grep file test.txt test1.txt

これで、grepは両方のファイルのファイルを含むすべての行を出力します。

3。一致した部分のみを印刷

デフォルトでは、grepはパターンを含む行全体を表示します。この出力を抑制し、一致した部分のみを表示するようにgrepに指示できます。したがって、grepは、指定されたパターンが存在する場合にのみ出力します。

$ grep -o $USER /etc/passwd
$ grep --only-matching $USER /etc/passwd

このコマンドは、 $ USERの値を出力します grepが何度もそれに遭遇します。一致するものが見つからない場合、出力は空になり、grepは終了します。

4。ケースマッチングを無視する

デフォルトでは、grepは大文字と小文字を区別して指定されたパターンを検索します。ユーザーがパターンのケースを確信できない場合があります。以下に示すように、このような場合はパターンの大文字小文字を無視するようにgrepに指示できます。

$ grep -i $USER /etc/passwd
$ grep --ignore-case $USER /etc/passwd

$ grep -y $USER /etc/passwd

これにより、端末に余分な出力行が返されます。それはあなたのマシンでも同じでなければなりません。最後のコマンドは廃止されたため、使用しないでください。

5。一致するgrepパターンを反転する

grepユーティリティを使用すると、ユーザーはマッチングを反転できます。これは、grepが指定されたパターンを含まないすべての行を出力することを意味します。クイックビューについては、以下のコマンドを確認してください。

$ grep -v file test.txt
$ grep --invert-match file test.txt

上記のコマンドは同等であり、ファイルを含まない行のみを出力します。

6。単語全体にのみ一致

grepユーティリティは、パターンを含む任意の行を出力します。そのため、任意の単語や文の中にパターンがある行も印刷されます。多くの場合、これらの値を破棄する必要があります。以下に示すように、-wオプションを使用してこれを簡単に行うことができます。

$ grep hello /usr/share/dict/american-english
$ grep -w hello /usr/share/dict/american-english

それらを次々に実行すると、違いがわかります。私のシステムでは、最初のコマンドは5行を返しますが、2番目のコマンドは2行しか返しません。

7。一致数を数える

多くの場合、何らかのパターンを使用して見つかった一致の数が必要な場合があります。 -c このような状況では、オプションが非常に便利です。これを使用すると、grepは行を出力する代わりに、一致する数を返します。上記のコマンドにこのフラグを追加して、これがどのように機能するかを視覚化できるようにしました。

$ grep -c hello /usr/share/dict/american-english
$ grep -c -w hello /usr/share/dict/american-english

コマンドはそれぞれ5と2を返します。

8。行番号を表示

一致が見つかった行番号を表示するようにgrepに指示できます。これは、ファイルの最初の行が行番号1で、10行目が行番号10である1ベースのインデックスを利用します。これがどのように機能するかを理解するには、以下のコマンドを参照してください。

$ grep -n -w cat /usr/share/dict/american-english
$ grep --line-number -w cat /usr/share/dict/american-english

上記の両方のコマンドは、アメリカ英語辞書の猫という単語を含む行を出力します。

9。ファイル名プレフィックスの抑制

2番目のコマンドの例を再度実行すると、grepが出力の前にファイル名を付けていることがわかります。多くの場合、それらを無視するか、完全に省略したい場合があります。次のLinuxgrepコマンドは、これを説明します。

$ grep -h file test.txt test1.txt
$ grep --no-filename file test.txt test1.txt

上記のコマンドはどちらも同等であるため、どちらでも選択できます。ファイル名ではなく、一致したパターンの行のみが返されます。

10。ファイル名プレフィックスのみを表示

一方、パターンを含むファイル名だけが必要な場合もあります。 -lを使用できます このためのオプション。このオプションの長い形式は、 –files-with-matchesです。 。

$ grep -l cat /usr/share/dict/*-english
$ grep --files-with-matches cat /usr/share/dict/*-english

上記の両方のコマンドは、パターンcatを含むファイル名を出力します。これは、アメリカ英語とイギリス英語の辞書を、私の端末でのgrepの出力として表示します。

11。ファイルを再帰的に読み取る

-r を使用して、ディレクトリ内のすべてのファイルを再帰的に読み取るようにgrepに指示できます。 または–再帰オプション 。これにより、一致を含むすべての行が出力され、見つかったファイル名のプレフィックスが付けられます。

$ grep -r -w cat /usr/share/dict

このコマンドは、ファイル名とともにcatという単語を含むすべてのファイルを出力します。 / usr / share / dictの場所は、すでに複数の辞書ファイルが含まれているため、使用しています。 -R オプションは、grepがシンボリックリンクをトラバースできるようにするために使用できます。

12。パターン全体と一致するものを表示する

行全体で完全一致を含む一致のみを表示するようにgrepに指示することもできます。たとえば、次のコマンドは、catという単語のみを含む行を生成します。

$ grep -r -x cat /usr/share/dict/
$ grep -r --line-regexp cat /usr/share/dict/

彼らは単に私の辞書に猫だけを含む3行を返します。私のUbuntu19.10の/dictディレクトリには3つのファイルがあり、1行にcatという単語が含まれています。

Linuxgrepコマンドの正規表現

grepの最も魅力的な機能の1つは、複雑な正規表現を処理できることです。そのオプションの多くを示すいくつかの基本的なgrepの例しか見ていません。ただし、正規表現に基づいてファイルを処理する機能は、はるかに要求が厳しくなります。正規表現には徹底的な技術的研究が必要なため、簡単な例を使用します。

13。開始時に一致を選択

grepを使用して、行の先頭でのみ一致を指定できます。これは、パターンの固定と呼ばれます。キャレットを利用する必要があります‘^’ この目的のためのオペレーター。

$ grep "^cat" /usr/share/dict/american-english

上記のコマンドは、catで始まるLinuxアメリカ英語辞書のすべての行を出力します。ガイドのこの部分まで、パターンを指定するために引用符を使用しませんでした。ただし、今後はこれらを使用するため、同様に使用することをお勧めします。

14。終了時に一致を選択

上記のコマンドと同様に、最後にパターンを含む行に一致するようにパターンを固定することもできます。以下のコマンドをチェックして、これがLinuxgrepでどのように機能するかを理解してください。

$ grep "fish$" /usr/share/dict/american-english

このコマンドは、魚で終わるすべての行を出力します。この場合、パターンの最後に$記号がどのように使用されているかに注目してください。

15。単一の文字に一致する

Unix grepユーティリティを使用すると、ユーザーはパターンの一部として任意の1文字を照合できます。ドット‘。’ この目的のために演算子が使用されます。理解を深めるために、以下の例をご覧ください。

$ grep -x "c.t" /usr/share/dict/american-english

このコマンドは、cで始まりtで終わる3文字の単語を含むすべての行を出力します。 -xを省略した場合 オプションの場合、grepはこれらの文字の任意の組み合わせを持つすべての行を表示するため、出力は非常に大きくなります。ダブル..を使用できます 2つのランダムな文字などを指定します。

16。一連の文字からの一致

角かっこを使用して、文字のセットから簡単に選択することもできます。いくつかの基準に基づいて文字を選択するようにgrepに指示します。通常、これらの基準を指定するには正規表現を使用します。

$ grep "c[aeiou]t" /usr/share/dict/american-english 
$ grep -x "m[aeiou]n" /usr/share/dict/american-english

最初の例では、パターンcの後に1つの母音が続き、文字tが含まれるアメリカ英語辞書のすべての行が出力されます。次の例では、m、母音、nの順に含むすべての正確な単語を出力します。

17。さまざまな文字から一致する

次のコマンドは、grepを使用して文字の範囲から一致させる方法を示しています。自分でコマンドを試して、どのように機能するかを確認してください。

$ grep "^[A-Z]" /usr/share/dict/american-english
$ grep "[A-Z]$" /usr/share/dict/american-english

最初の例では、大文字で始まるすべての行を出力します。 2番目のコマンドは、大文字で終わる行のみを表示します。

18。パターン内の文字を省略

特定の文字を含まないパターンを検索したい場合があります。次の例では、grepを使用してこれを行う方法を示します。

$ grep -w "[^c]at$" /usr/share/dict/american-english
$ grep -w "[^c][aeiou]t" /usr/share/dict/american-english

最初のコマンドは、catを除くatで終わるすべての単語を表示します。 [^ c] grepに文字cを検索から除外するように指示します。 2番目の例は、母音の後にtが続き、cを含まないすべての単語を表示するようにgrepに指示します。

19。パターン内の文字をグループ化する

[]では、単一の文字セットのみを指定できます。複数の文字セットを使用して追加の文字を指定することもできますが、関心のある文字グループがすでにわかっている場合は適していません。ありがたいことに、()を使用してパターン内の複数の文字をグループ化できます。

$ grep -E "(copy)" /usr/share/dict/american-english
$ egrep "(copy)" /usr/share/dict/american-english

最初のコマンドは、文字グループのコピーが含まれているすべての行を出力します。 -E フラグが必要です。このフラグを省略したい場合は、2番目のコマンドegrepを使用できます。これは、grepの拡張フロントエンドにすぎません。

20。パターンでオプションの文字を指定する

grepユーティリティを使用すると、ユーザーはパターンにオプションの文字を指定することもできます。 「?」を使用する必要があります このためのシンボル。その文字の前にあるものはすべて、パターン内でオプションになります。

$ grep -E "(commu)?nist" /usr/share/dict/american-english

このコマンドは、nistを含む辞書のすべての行と一緒に共産主義という単語を出力します。 -Eの方法をご覧ください ここではオプションを使用します。これにより、grepはより複雑なまたは拡張されたパターンマッチングを実行できます。

21。パターンで繰り返しを指定する

特定のgrepコマンドでパターンを一致させる必要がある回数を指定できます。次のコマンドは、grepパターンのクラスから文字数を選択する方法を示しています。

$ grep -E "[aeiou]{3}" /usr/share/dict/american-english
$ grep -E "c[aeiou]{2}t" /usr/share/dict/american-english

最初の例では、3つの母音を含むすべての行が印刷されますが、最後の例では、c、2つの母音、tの順に含まれるすべての行が印刷されます。

22。 1つ以上の繰り返しを指定する

「+」を利用することもできます 一致を1回以上指定するためのgrepの拡張機能セットに含まれる演算子。次のコマンドをチェックして、これがLinuxgrepコマンドでどのように機能するかを確認してください。

$ egrep -c "[aeiou]+" /usr/share/dict/american-english
$ egrep -c "[aeiou]{3}" /usr/share/dict/american-english

最初のコマンドは、grepが1つ以上の連続した母音に遭遇した回数を出力します。そして2番目のコマンドは、3つの連続した母音を含む行数を示します。大きな違いがあるはずです。

23。繰り返しの下限を指定する

一致の繰り返し回数には、上限と下限の両方を選択できます。次の例は、実際に下限を選択する方法を示しています。

$ egrep "[aeiou]{3,}" /usr/share/dict/american-english

egrepを使用しました grep -Eの代わりに 上記のコマンドの場合。 3つ以上の連続した母音を含むすべての行を選択します。

24。繰り返しの上限を指定する

下限と同様に、特定の文字に最大で一致する回数をgrepに指示することもできます。次の例は、最大3つの母音を含むアメリカ英語辞書のすべての行に一致します。

$ egrep "[aeiou]{,3}" /usr/share/dict/american-english

これらの拡張機能にはegrepを使用することをお勧めします。これは、egrepの方がやや高速で、最近では慣例になっているためです。カンマの配置に注意してください‘、’ 前述の2つのコマンドの記号。

25。上界と下界を指定する

grepユーティリティを使用すると、ユーザーは一致の繰り返しの上限と下限の両方を同時に選択することもできます。次のコマンドは、grepに、最小2つから最大4つの連続した母音を含むすべての単語に一致するように指示します。

$ egrep "[aeiou]{2,4}" /usr/share/dict/american-english

このようにして、上限と下限の両方を同時に指定できます。

26。すべてのキャラクターを選択

ワイルドカード文字を使用できます‘*’ grepパターン内の文字クラスの0個以上の出現をすべて選択します。これがどのように機能するかを理解するには、次の例を確認してください。

$ egrep "collect*" test.txt 
$ egrep "c[aeiou]*t /usr/share/dict/american-english

最初の例では、 test.txt で「collect」に1回以上一致する唯一の単語であるため、単語コレクションを出力します。 ファイル。最後の例は、cの後に任意の数の母音が続き、Linuxのアメリカ英語辞書のtが続くすべての行に一致します。

27。代替正規表現

grepユーティリティを使用すると、ユーザーは交互のパターンを指定できます。 「|」を使用できます 2つのパターンのいずれかを選択するようにgrepに指示するための文字。この文字は、POSIX用語では中置演算子として知られています。以下の例を見て、その効果を理解してください。

$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-english

このコマンドは、2つの連続する大文字の母音または小さな母音を含むすべての行に一致するようにgrepに指示します。

28。英数字を照合するためのパターンを選択

英数字パターンには、数字と文字の両方が含まれます。以下の例は、grepコマンドを使用して英数字を含むすべての行を選択する方法を示しています。

$ egrep "[0-9A-Za-z]{3}" /usr/share/dict/american-english
$ egrep "[[:alnum:]]{3}" /usr/share/dict/american-english

上記のコマンドは両方とも同じことをします。 0〜9、A〜Z、およびa〜zの3つの連続した文字の組み合わせを含むすべての行に一致するようにgrepに指示しています。ただし、2番目の例では、パターン指定子を自分で作成する必要がありません。これは特別な表現と呼ばれ、grepはそれらのいくつかを提供します。

29。特殊文字をエスケープする

これまで、「$」、「^」、「|」などの多くの特殊文字を使用してきました。拡張正規表現を定義するため。しかし、パターン内のこれらの文字のいずれかと一致させる必要がある場合はどうでしょうか。幸いなことに、grepの開発者はすでにそのことを考えており、バックスラッシュ“ \”を使用してこれらの特殊文字をエスケープすることができます。 。

$ egrep "\-" /etc/passwd

上記のコマンドは、 / etc / passwdのすべての行に一致します ハイフンに対してファイルする“-“ 文字とそれらを印刷します。この方法でバックスラッシュを使用して、他の特殊文字をエスケープできます。

30。 grepパターンを繰り返す

すでに「*」を使用しています パターン内の文字列を選択するためのワイルドカード。次のコマンドは、括弧で始まり、文字と単一の空白のみを含むすべての行を印刷する方法を示しています。 「*」を使用します これを行うには。

$ egrep "([A-Za-z ]*)" test.txt

次に、デモファイル test.txt内に括弧で囲まれた行を追加します。 このコマンドを実行します。このコマンドのコツはもうわかっているはずです。

日常のコンピューティングにおけるLinuxgrepコマンド

grepの最も優れている点の1つは、その普遍的な適用性です。このコマンドを使用して、重要なLinuxターミナルコマンドを実行するときに重要な情報を除外できます。以下のセクションでは、それらのいくつかを簡単に垣間見ることができますが、コア原則はどこにでも適用できます。

31。すべてのサブディレクトリを表示する

次のコマンドは、grepを使用してディレクトリ内のすべてのフォルダを照合する方法を示しています。 ls -lコマンドを使用して、ディレクトリの内容を標準出力に表示し、一致する行をgrepで切り取ります。

$ ls -l ~ | grep "drw"

Linuxのすべてのディレクトリには、パターン drwが含まれているため 最初は、これをgrepのパターンとして使用しています。

32。すべてのMP3ファイルを表示する

次のコマンドは、grepを使用してLinuxマシンでmp3ファイルを見つける方法を示しています。ここでもlsコマンドを使用します。

$ ls /path/to/music/dir/ | grep ".mp3"

まず、 ls 音楽ディレクトリの内容を出力に出力すると、grepは.mp3を含むすべての行に一致します。このデータをgrepに直接パイプ処理したため、lsの出力は表示されません。

33。ファイル内のテキストを検索

grepを利用して、単一のファイルまたはファイルのコレクション内の特定のテキストパターンを検索することもできます。 mainというテキストを含むすべてのCプログラムファイルを検索するとします。 それらの中で。これについて心配する必要はありません。いつでもgrepできます。

$ grep -l 'main' /path/to/files/*.c

デフォルトでは、grepは、結果を簡単に視覚化できるように、一致部分を色分けする必要があります。ただし、Linuxマシンでそれができない場合は、 –colorを追加してみてください。 コマンドのオプション。

34。ネットワークホストを探す

/ etc / hostsファイルには、ホストIPやホスト名などの情報が含まれています。以下のコマンドを使用して、grepを使用してこのエントリから特定の情報を見つけることができます。

$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/hosts

パターンをすぐに取得しなくても心配しないでください。 1つずつ分解すると、非常に理解しやすくなります。実際、このパターンは0.0.0.0から999.999.999.999の範囲のすべての一致を検索します。ホスト名を使用して検索することもできます。

35。インストールされているパッケージを探す

Linuxは、いくつかのライブラリとパッケージの上にあります。 dpkgコマンドラインツールを使用すると、管理者はUbuntuなどのDebianベースのLinuxディストリビューションでパッケージを制御できます。以下に、grepを使用して、dpkgを使用してパッケージに関する重要な情報を除外する方法を示します。

$ dpkg --list | grep "chrome"

Google Chromeブラウザのバージョン番号、アーキテクチャ、説明など、私のマシンに役立つ情報がいくつか表示されます。同様に、システムにインストールされているパッケージの情報を見つけるために使用できます。

36。利用可能なLinuxイメージを見つける

利用可能なすべてのLinuxイメージを検索するために、dpkgコマンドでgrepユーティリティをもう一度使用しています。このコマンドの出力は、システムによって大きく異なります。

$ dpkg --list | grep linux-image

このコマンドは、dpkg –listの結果を出力し、それをgrepにフィードするだけです。次に、指定されたパターンのすべての行に一致します。

37。 CPUのモデル情報を検索する

以下のコマンドは、grepコマンドを使用してLinuxベースのシステムでCPUモデル情報を見つける方法を示しています。

$ cat /proc/cpuinfo | grep -i 'model'
$ grep -i "model" /proc/cpuinfo

最初の例では、cat / proc / cpuinfoの出力をgrepにパイプ処理し、単語モデルを含むすべての行を照合しました。ただし、 / proc / cpuinfo以降 はそれ自体がファイルであるため、後者の例に示すように、grepを直接使用できます。

38。ログ情報を検索

Linuxは、システム管理者のために、あらゆる種類のログを/varディレクトリに保存します。これらのログファイルから有用な情報を簡単にgrepできます。次のコマンドは、そのような単純な例を示しています。

$ grep -i "cron" /var/log/auth.log

このコマンドは、/ var / log / auth.logファイルを調べて、LinuxCRONジョブに関する情報を含む可能性のある行を探します。 -i フラグを使用すると、より柔軟になります。このコマンドを実行すると、auth.logファイルにCRONという単語が含まれるすべての行が表示されます。

39。プロセス情報を見つける

次のコマンドは、grepを使用してシステムプロセスに役立つ情報を見つける方法を示します。プロセスは、Linuxマシンで実行されているプログラムのインスタンスです。

$ ps auxww | grep 'guake'

このコマンドは、 guakeに関連するすべての情報を出力します パッケージ。 guake の場合は、他のパッケージを試してください お使いのマシンでは利用できません。

40。有効なIPのみを選択

以前は、 / etc / hostsからのIPアドレスを照合するために比較的単純な正規表現を使用しました ファイル。ただし、有効なIPは、それぞれの4つの象限の範囲(1〜255)の値しか取得できないため、このコマンドは多くの無効なIPにも一致します。

$ egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' /etc/hosts

上記のコマンドは、999.999.999.999のような無効なIPアドレスを出力しません。

41。圧縮ファイル内を検索

Linux grepコマンドのzgrepフロントエンドを使用すると、圧縮ファイル内のパターンを直接検索できます。理解を深めるために、次のコードスニペットをざっと見てください。

$ gzip test.txt
$ zgrep -i "sample" test.txt.gz

まず、 test.txtを圧縮します gzipを使用してファイルし、次にzgrepを使用して単語サンプルを検索します。

42。空の行の数を数える

次の例に示すように、grepを使用すると、ファイル内の空の行数を簡単に数えることができます。

$ grep -c "^$" test.txt

test.txt以降 空の行が1つだけ含まれている場合、このコマンドは1を返します。空の行は、正規表現“ ^ $”を使用して照合されます。 カウントは-cを利用して印刷されます オプション。

43。複数のパターンを見つける

これまで、単一のパターンを見つけることに重点を置いてきました。 grepユーティリティを使用すると、ユーザーは複数のパターンを持つ行を同時に検索することもできます。以下のコマンド例を見て、これがどのように機能するかを確認してください。

$ grep -e 'sample' -e 'file' test.txt
$ grep -e 'sample' test.txt | grep -e 'file'
$ grep -e 'sample\| file' test.txt

上記のすべてのコマンドは、「サンプル」と「ファイル」の両方を含む行を出力します。

44。有効なメールアドレスと一致する

多くのベテランプログラマーは、ユーザー入力を自分で検証することを好みます。幸い、grep正規表現を使用して、IPやメールなどの入力データを検証するのは非常に簡単です。次のコマンドは、すべての有効なメールアドレスと一致します。

$ grep -E -o "\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" /path/to/data

このコマンドは非常に効率的で、最大99%の有効な電子メールアドレスに簡単に一致します。 egrepを使用してプロセスを高速化できます。

その他のgrepコマンド

grepユーティリティは、データに対するさらなる操作を可能にする、より多くの便利なコマンドの組み合わせを提供します。このセクションでは、めったに使用されないが重要なコマンドについて説明します。

45。ファイルからパターンを選択

事前定義されたファイルからgrepの正規表現パターンを非常に簡単に選択できます。 -fを使用します このためのオプション。

$ echo "sample"> file
$ grep -f file test.txt

echoコマンドを使用して、1つのパターンを含む入力ファイルを作成しています。 2番目のコマンドは、grepのファイル入力を示しています。

46。コントロールコンテキスト

オプション-Aを使用して、grepの出力コンテキストを簡単に制御できます。 、 -B 、および -C 。次のコマンドは、それらの動作を示しています。

$ grep -A2 'file' test.txt
$ grep -B2 'file' test.txt
$ grep -C3 'Linux' test.txt

最初の例は試合後の次の2行を示し、2番目の例は前の2行を示し、最後の例は両方を示しています。

47。エラーメッセージの抑制

-s このオプションを使用すると、ファイルが存在しないか読み取れない場合に、grepによって表示されるデフォルトのエラーメッセージを抑制できます。

$ grep -s 'file' testing.txt
$ grep −−no-messages 'file' testing.txt

tests.txtという名前のファイルはありませんが 私の作業ディレクトリでは、grepはこのコマンドに対してエラーメッセージを発行しません。

48。バージョン情報を表示する

grepユーティリティはLinux自体よりもはるかに古く、Unixの初期にまでさかのぼります。 grepのバージョン情報を取得する場合は、次のコマンドを使用します。

$ grep -V
$ grep --version

49。ヘルプページを表示する

grepのヘルプページには、使用可能なすべての機能の要約リストが含まれています。ターミナルから直接多くの問題を克服するのに役立ちます。

$ grep --help

このコマンドは、grepのヘルプページを呼び出します。

50。ドキュメントを参照

grepのドキュメントは非常に詳細であり、利用可能な機能と正規表現の使用法を完全に紹介しています。以下のコマンドを使用して、grepのマニュアルページを参照できます。

$ man grep

終わりの考え

grepの堅牢なCLIオプションを使用してコマンドの任意の組み合わせを作成できるため、grepコマンドに関するすべてを1つのガイドにカプセル化することは困難です。ただし、編集者は、ほぼすべての実用的なgrepの例の概要を説明するために最善を尽くしており、よりよく理解できるようにしています。これらのコマンドをできるだけ多く練習し、grepを日常のファイル処理に組み込む方法を見つけることをお勧めします。毎日新しい障害に直面する可能性がありますが、これがLinuxgrepコマンドを実際に習得する唯一の方法です。


Linux
  1. 初心者向けのLinuxwcコマンドの説明(6例)

  2. 初心者向けのLinuxXargsコマンドの8つの実用例

  3. 開発者向けの10の実用的なGrepコマンドの例

  1. 初心者と専門家のための10のLinuxコマンドチュートリアル

  2. Linuxでのヘッドコマンドの5つの実用例

  3. Linuxgrepコマンド

  1. LinuxでのLsコマンド(ファイルとディレクトリのリスト)

  2. 初心者のための10のLinuxCatコマンドの例

  3. Linux test -a コマンド テストとは何ですか?