三大搜索利器 -- grep

grep 的做用php


  在文件中查找並顯示包含指定字符串的行正則表達式

 

grep 格式apache


   grep [選項] ... 查找條件 目標文件centos

 

經常使用選項bash


  •  -i : 查找時忽略大小寫;
  • -v : 反轉查找, 輸出與條件不相符的行;
  • -c : PATTERN 成功匹配到內容的次數;
  • -n : 顯示行號;
  • -m : 匹配的內容最大輸出的行數, -m 3 表示只輸出 3 行;
  • -e : 使用模式匹配, 可屢次使用 -e 進行多個匹配;
  • -o : 只打印匹配到的內容;
  • -w : 匹配整個單詞;
  • -x : 匹配整行;
  • -q : 靜默執行;
  • -s : 無提示, stderr會被忽略, -sq 組合可徹底屏蔽 grep 的輸出;
  • -a : 當認爲文件是二進制文件時, 使用 -a;
  • -E : 擴展正則表達式, 至關於使用 egrep;
  • -H : 輸出文件名, 在行內容前, 當目標文件爲多個時, 默認;

 

示例ssh


 

// *********************************** 示例 一 ************************************
// 過濾出用戶 tian 的行
grep 'tian' passwd 
    tian:x:502:502::/home/tian:/bin/bash

// *********************************** 示例 二 ************************************
// 過濾掉以 "#" 開頭的行及空行
grep -v "^#" /etc/yum.conf |grep -v "^$"    //grep -Ev "^#|^$" /etc/yum.conf 及 egrep -v "^#|^$" /etc/yum.conf 相同效果;
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=5
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release

// *********************************** 示例 三 *************************************
// -c 匹配到的次數
grep -c '^root' passwd
 1

// *********************************** 示例 四 *************************************
// -i 忽略大小寫;
grep -i 'root' /etc/ssh/sshd_config 
 #PermitRootLogin yes
 # the setting of "PermitRootLogin without-password".
 #ChrootDirectory none

// *********************************** 示例 五 *************************************
// -n 輸出匹配到內容的行號
grep -n '^root' passwd 
 1:root:x:0:0:root:/root:/bin/bash
 
// *********************************** 示例 六 *************************************
// 使用正則
// [] 匹配括號中任意字符
grep -n "^[abcd]" passwd 
 2:bin:x:1:1:bin:/bin:/sbin/nologin
 3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4:adm:x:3:4:adm:/var/adm:/sbin/nologin
 16:dbus:x:81:81:System message bus:/:/sbin/nologin
 18:abrt:x:173:173::/etc/abrt:/sbin/nologin
 26:apache:x:48:48:Apache:/var/www:/sbin/nologin
 
// [] 中使用範圍
grep -n "^[a-d]" passwd 
 2:bin:x:1:1:bin:/bin:/sbin/nologin
 3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4:adm:x:3:4:adm:/var/adm:/sbin/nologin
 16:dbus:x:81:81:System message bus:/:/sbin/nologin
 18:abrt:x:173:173::/etc/abrt:/sbin/nologin
 26:apache:x:48:48:Apache:/var/www:/sbin/nologin

// ********************************** 示例 七 **************************************
// ?; 單獨的?是不支持基本表達式;
grep -n '[od][ors][lnm]\?' test 
 1:good good study
 3:good
 5:goood
 6:goolld
grep -En '[od][ors][lnm]?' test 
 1:good good study
 3:good
 5:goood
 6:goolld
 
// * 匹配0次或屢次, 
grep -n "go*" test 
 1:good good study
 3:good
 4:gold
 5:goood
 6:goolld
 
// + 匹配一次或者屢次
grep -En "goo+" test 
 1:good good study
 4:good
 6:goood
 7:goolld

// 匹配以前項至少m次
grep -En "go{2,}" test 
 1:good good study
 4:good
 6:goood
 7:goolld
 
// 匹配其中一個
grep -En "go(g|o)" test 
 1:good good study
 3:gogogo
 4:good
 6:goood
 7:goolld
相關文章
相關標籤/搜索