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

初心者向けのLinuxfgrepコマンドチュートリアル(例付き)

grepはよく知られているLinuxコマンドですが(これについてはすでに詳しく説明しました)、このツールには2つの異なるバリアントが存在することをご存知ですか?はい、これらは egrep です およびfgrep 。このチュートリアルでは、わかりやすい例を使用して後者(fgrep)について説明します。ただし、その前に、このチュートリアルで説明されているすべての例と手順がUbuntu16.04LTSでテストされていることを言及する価値があります。

Linuxfgrepコマンド

公式ドキュメントを見ると、grepコマンドのマニュアルページには、fgrepはgrep-Fに過ぎないと書かれています。また、fgrepやegrepなどのバリアントは下位互換性のためにのみ提供されているとも述べています。これらの詳細については、このチュートリアルの後半で触れます。

一方、fgrepの構文は次のとおりです(grepの構文と同じです):

grep [OPTIONS] PATTERN [FILE...]

そして、grepコマンドのマニュアルページでツールを説明する方法は次のとおりです。

grep searches the named input FILEs for lines containing a match to the given PATTERN. If no files 
are specified, or if the file “-” is given, grep searches standard input. By default, grep prints
the matching lines.

次のQ&Aスタイルの例は、fgrepがどのように機能するかについてのより良いアイデアを提供するはずです。

Q1。 fgrepはgrepやegrepとどう違うのですか?

fgrepコマンドは、PATTERNを(正規表現ではなく)固定文字列のリストとして改行で区切って解釈するという意味で、grepとegrepの両方とは異なります。

grep -Fと同じであると言われているので、専門家がStackExchangeでgrepの-Fオプションを説明した方法は次のとおりです。

The -F switch switches grep into a different mode where it accepts a pattern to match, but then 
splits that pattern up into one search string per line and does an OR search on any of the strings
without doing any special pattern matching.

Q2。 fgrepの使用方法は?

fgrepの使用法を理解するために、最初に基本的な例を見てみましょう。次の内容を含むファイル(file1)があるとします。

また、file1で検索する単語のリストを含む別のファイル(words.txt)があります。

したがって、fgrepを使用してこの検索を実行する方法は次のとおりです。

fgrep -f words.txt file1

そのため、見つかった単語が赤で強調表示されていることがわかります。この場合、grepとegrepも同じことを行うと主張する人もいるかもしれませんが、fgrepはどのように異なりますか?

まず、はい、あなたは正しいです。 grepおよびegrepコマンドも同様の出力を生成します:

ただし、file1とwords.txtに次の内容が含まれている場合(単語内の特殊文字に注意)、違いは明らかです。

ここで、egrepとgrepはすべての単語を見つけることができません:

ただし、fgrepは意図したとおりに機能します:

Q3。 fgrepとgrepの間に本当に違いはありませんか?

公式ドキュメントによると、fgrepコマンドとgrep-Fコマンドの間に違いはありません。ただし、報告によると、2つのツールには大きな違いが1つあります。それは、使用する文字列照合アルゴリズムです。 fgrepはAho-Corasickアルゴリズムを使用しますが、grepはCommentz-Walterの修正バージョンを使用します。

「これは、grepを意味します fgrepが最悪の場合、O(mn)の複雑さを持ちます 最悪の場合O(m + n)です」とStackExchangeフォーラムの専門家は言います。

結論

明らかなように、fgrepコマンドを理解して使用することは難しくありません。 fgrepとgrep-Fの違いについては、第3四半期のポイントについてはすでに説明しましたが、この問題は多くのユーザーを悩ませるべきではないと考えています。疑問がある場合、またはfgrep関連のクエリがある場合は、以下にコメントを残して共有してください。


Linux
  1. Linuxは初心者向けのコマンドチュートリアルを展開します(例付き)

  2. 初心者向けのLinuxファクターコマンドチュートリアル(例付き)

  3. Linux yes初心者向けコマンドチュートリアル(例付き)

  1. 初心者向けのLinuxnprocコマンドチュートリアル(例付き)

  2. 初心者向けのLinuxtacコマンドチュートリアル(例付き)

  3. Linuxユーザー初心者向けコマンドチュートリアル(例付き)

  1. 初心者向けのLinuxsumコマンドチュートリアル(例付き)

  2. 初心者向けのLinuxsleepコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxbasenameコマンドチュートリアル(例付き)