grepコマンド
役割:テキスト検索ツール、ユーザーが指定した「モデル」に基づいて、対象テキスト行のためのラインでは、試合をチェックし、一致する行を出力します。
::正規表現文字と文字の書かれたテキストフィルタによるモード
構文:grepの[OPTIONS] PATTERN [FILE ...]
共通オプション:
グレップ= 'のgrep --color = auto' で:システムが別名のgrepがデフォルトになります表示色付きのテキストを、マッチング--color =自動#
-m ###のみ一致する行を表示します
-v#表示は、ラインパターンに一致しません
-i#は大文字と小文字を無視します
-n#ショーライン番号が一致
行-c#マッチの統計情報の数
-o#表示のみマッチした文字列
-q#サイレントモードでは、出力情報をしません
行にマッチ-A#表示ライン
行の最初の数行に一致するように-B#表示
マッチした行の前と後の-C#の表示ライン
-e#実装ロジックまたは複数のオプションの関係
-w#は単語全体にマッチします
-E#使用ERE
-F#同等fgrepは、正規表現をサポートしていません。
パターンファイルの処理に係る-f #FILE
正規表現
REGEXP:制御機能またはワイルドカードながらモード文字とテキスト書かれた文字の特別な種類、一部の文字(メタ文字)は、文字リテラルの意味を表すものではありません
次のように2つのカテゴリに分かれ、両者の間の基本的な正規表現と拡張正規表現のメタ文字の違いは次のとおりです。
1、基本的な正規表現のメタ文字
^#の場合[]外[]内は、それが意味している場合、文字で始まる言った特定の文字に加えて、
$#特定の文字の終わりを示します
。#手段は、任意の1つの文字にマッチ
*直前の文字#任意の回数を表しマッチ
[]#がAの括弧にマッチした文字の任意の数を表します
*#は、すべての一致を表します
括弧を除くすべての文字にマッチし、[^]#
^ $#マッチングの空白ライン情報を表します
\エスケープ文字の本来の意味で特別な意味を持つ#文字は、
2、拡張正規表現
+#文字は一回または複数回発生したことを示し
?#文字が0回以上出現することを示します
|#表現や関係、より多くの情報をマッチング
()#マッチ全体の情報、アイテムを後で参照することができます
{#}は文字の数が目の前に現れる定義します
正規表現のほかにも、以下のメタ文字をサポートしています。
[:Alnum:]文字と数字
[:アルファ:いずれの場合英語の文字を表す、すなわちAZ、AZ
[:下:]小文字
[:アッパー:]大文字
[ブランク:]空白(スペースとタブ)
【:スペース:】垂直及び水平空白(比[ブランク:】広い範囲を含む)の
[:CNTRL:]印刷できない制御文字(バックスペース、削除、ベル...)
[:桁:10進数[:XDIGIT:] 16進数
[:グラフ:非空白文字が印字可能
[:印刷:]印字可能な文字
[:PUNCT:]句読点
A、一般的に使用されるオプションをGREP
実施例1:マッチにはgrep検索ルートキー、およびディスプレイの第一行
三つのコマンド上記の違いを観察し、-mオプションを指定せずに、デフォルトのすべての行が一致するように見える、プラスラインの数-m -mオプションが表示のみ指定されています
例2:深センを除くすべての行のドキュメントを表示します
ラインはもはや深表示される-vオプションと組み合わせて上記の結果、スルー
例3:深セン文字が機密文書を小文字されていません検索
-iオプション、grepの検索を結合すると、キーワードは大文字と小文字を区別しません
例4の場合:文書内の文字の行数を深センの文字やショーを探します
-nオプションを追加した後、ラインは、文書のキーワードの行数キーワード行ショーの最初であろう
深センの文字を含む統計的な文書のすべての行の数:5例
-cオプションを追加した後、深センに含まれる文字の行数をカウントし
例6:表示のみ一致した文字
プラス-oオプションは表示のみマッチング文字に、ラインに合わせて、表示されません。
実施例7:ミュート表示、即ち、出力しない任意の情報
クエリのルート文字、出力しない任意の結果が、結果は次のようになります場合には
実施例8:ショーマッチ行とバック行その
結果プラス-Aオプション(後)、及び、ディスプレイがラインとバックラインに一致している1される行数を指定します
実施例9:一致行を表示し、その最前列に
使用-B(before)选项,并指定行数为1,则显示匹配到的行及其前一行
举例10:显示匹配到的行及其前后1行
使用-C选项并指明其行数为1,则显示其匹配到的行以及前后各一行
举例11:匹配多个选项
使用-e选项能实现匹配shenzhen或者longhua的字符的行,并显示到屏幕
举例12:精确匹配到某个单词
不加-w选项,grep默认会显示出所有包含字符的行,加上-w则表示显示匹配到这个单词的行
举例13:通过扩展的正则匹配
由于?只支持扩展的正则表达式,所以需要在前面加上-E选项才能匹配到关键字符
二、grep位置锚定用法:
常用的表达式:
^ #行首锚定,用于模式的最左侧
$ #行尾锚定,用于模式的最右侧
^<pattern>$ #用于模式匹配整行
^$ #匹配空行
^[[:space:]]*$ #匹配空白行
\<或者\b #词首锚定,用于单词模式的最左侧
\>或者\b #词尾锚定,用于单词模式的最右侧
\<pattern\> #匹配整个单词
举例:查找/etc/passwd中以root开头的行
在查找的字符前加^,只显示以该字符开头的行
举例2:查找/etc/passwd中以nologin结尾的行
在要匹配的字符后面加$,则grep会查找出以该字符结尾的所有行
举例3:查找出文档内容中以大写Z开头,并以520结尾的行
举例4:查找出文档中的空行
^$以这两个字符作为关键字符去匹配,意味着此行内没有任何内容,即空行
举例5:找出文档中空白行
从上图可知,^$匹配不了空白行,^[[:space:]]*$的含义为,以空白行开头且中间有任意个空白字符的行
举例6:查找文档中re在词尾的行
此处需要注意的是,用引号将模式给引起来,否则不生效
三、grep匹配次数
\{n\} #前面的字符重复n次
\{n,\} #前面的字符重复n次以上
\{m,n\} #前面的字符重复m次以上n次以下
举例1:匹配字符r后面的o出现3次的行
注意观察,标红的字符为匹配到的字符,当连续出现3个o则被匹配
举例2:匹配字符r后面的o出现最少3次,最多4次的行
观察此图和上图的区别,可知上图始终只能标识3个o,此图中则标识3个和4个o
举例3:匹配字符r后的o至少3次以上
举例4:匹配字符r后面的o最多出现3次
上图中,匹配o的次数包括0次,1次,2次,3次
四、分组及后向引用
\(\)将一个或多个字符捆绑在一起,当作一个整体处理,分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部变量中吗,这些变量的命名方式为:\1,\2,\3……
举例:利用grep分组匹配字符
以上将root和admin分别放在\(\)中,则将root分成组1,admin分成组2,后面再次出现重复字符时,可以通过\1和、2代替
五、或者
可以用符号\| 来表示匹配中的或者选项
举例:过滤出文档中Cat或者cat
在上图中\|则表示的是逻辑中的或的意思