Linux中正則表達式和grep的使用

正則表達式在Linux經常配合grepsedawk等用于搜尋關鍵字。正則表達式分為正則表達式和擴展正則表達式:
一、正則表達式
1.1 元字符:
.:匹配任意字符   
[]:匹配[]中的任意一個字符
[^]:匹配[]以外的任意字符
[:alpha:]大小寫英文字母
[:digit:]:十進制數字
[:xdigit:]:十六進制數字
[:upper:]:大寫字母
[:lower:]:小寫字母
[:space:]:空格
[:punct:]:標點符號
[:blank:]:空格和制表符(TAB
[:alnum:]:所有字母和數字
[:print:]:可打印字符
[:graph:]:可打印的非空白字符
1.2 位置錨定:

^:錨定行首
$:錨定行尾
^$:空行
^PATTERN$:錨定整行
^[[:space:]]$:空白行
\b PATTERN\b |  \< PATTERN\>:匹配整個單詞
\b | \<:詞首錨定
\b | \>:詞尾錨定
1.3 匹配次數:

*:匹配其前面字符任意次,最少0次,最多不限
.*:匹配任意字符任意次
\{n,m\}:匹配其前面字符最少n次,最多m
\{n\}:匹配其前面字符n
\{n,\}:匹配其前面字符至少n
\{,m\}:匹配其前面字符至多m
\+:匹配其前面字符至少1次,至多無限次
\?:匹配其前面字符0次或1次,最多1
1.4 分組
\PATTERN\\1 \1表示和前面\\)中的內容相同,引用前面的內容
1.5 
|
a \| b:表示ab

二、擴展正則表達式

擴展正則表達式和基本正則表達式差別不大,一下為有差別的部分:
+:匹配其前面字符至少1次,至多無限次
?:匹配其前面字符0次或1次,最多1
{n,m}:匹配其前面字符最少n次,最多m
{n,}:匹配其前面字符至少n
{,m}:匹配其前面字符至多m
{n}:匹配其前面字符n

三、grep命令:用于匹配關鍵字,支持正則表達式

grep [OPTIONS] PATTERN [FILE…]
常用參數:
  -e:同時匹配多個結果,多個結果之間為并列的關系
  -i:忽略大小寫
  -c:匹配統計的行數
  -E:采用擴展正則表達式,相當于egrep
  -o:只顯示匹配到的結果
  -n:顯示行號
  -v:取反
  -C #:顯示匹配結果上下#
  -A #:顯示匹配結果下面#
  -B #:顯示匹配結果上面#
  -w:匹配整個單詞
  -q:靜默輸出,常用在腳本中,取$?的值

四、例題:
1、顯示三個用戶root、mage、wangUID和默認shell
cat /etc/passwd|egrep “^root|^mage|^wang”|cut -d: -f 1,3
2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行
[root@localhost script]# cat /etc/rc.d/init.d/functions |egrep “^[_[:alpha:]]+\(\)”
3、使用egrep取出/etc/rc.d/init.d/functions中其基名
[root@localhost script]# echo “/etc/rc.d/init.d/function”|egrep -o “/[[:alpha:]]+$”|cut -d”/”
-f2
4、使用egrep取出上面路徑的目錄名
[root@localhost script]# echo “/etc/rc.d/init.d/function”|egrep -o “/.*/”
5、利用擴展正則表達式分別表示0-9、10-99、100-199200-249、250-255
egrep “[0-9]{1}”
egrep “[0-9]{2}”
egrep “[0-9]{3}”
egrep “2[0-4]{1}[0-9]{1}”
egrep “25[0-5]{1}”
6、顯示ifconfig命令結果中所有IPv4地址
ifconfig  | egrep  -o “([0-9]{1,3}\.){3}[0-9]{1,3}”
7、將此字符串:welcome to  magedu linux 中的每個字符去重并排序,重復次數多的排到前面
[root@localhost script]# echo “welcome to magedu linux”|egrep -o “[[:alpha:]]”|sort|uniq -c|so
rt -rn                    

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/72773

(0)
王子豪王子豪
上一篇 2017-04-08 15:54
下一篇 2017-04-08 16:06

相關推薦

  • 第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主使用紅色顯示; #!/bin/bash for i in {1..254};do if ping -c 1 -w 1 192.16…

    2017-07-03
  • 馬哥教育網絡19期+第十八周課程練習

    1、為LNMP架構添加memcached支持,并完成對緩存效果的測試報告; LNMP的安裝過程不再贅述. # yum install -y memcached # cat /etc/sysconfig/memcached  PORT="11211" &nbsp…

    Linux干貨 2016-09-19
  • 搜索引擎-處理查詢

     我們從用戶的角度來看,用戶不關心什么索引結構是倒排還是簽名文件,也不需要知道相關排序算法。用戶提交了查詢,就需要獲取滿意的搜索結果。這個搜索結果就是搜索引擎是否提供有效的服務。 1.查詢流程 查詢流程圖: 1)用戶提交查詢 2)分析查詢      查詢預處理:    …

    Linux干貨 2015-12-10
  • linux命令速記技巧

    linux命令速記技巧 linux命令有一定的命名規則,一個正常的coder在編碼的過程中都會考慮命名的語義化,開發者對函數的命名一定也盡量遵循這個規律.了解目錄所對應的英文全稱有助于自己的記憶,理解記憶獲得知識的留存率要遠大于死記硬背.如果英文基礎太差,小編建議先學好英文基本功再來學習這些命令. 命令的中文對照 命令 英文全稱 中文釋義 ls list 列…

    Linux干貨 2017-03-25
  • 進程管理

    Process Manager 工作管理  jobs ctrl+z,& bg,fg nohup 進程,資源管理  查看:pstree,ps,top,vmstat,pmap 查詢:pgrep,pidof,fuser,lsof 管理:kill,nice,renice 管理軟件or命令  htop glances dstat …

    Linux干貨 2016-04-11
  • bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示

    1)bash的工作特性之命令執行狀態返回值; 在 Linux 下,任意一個命令執行結束之后,bash都會返回0-255之間的數值以表示命令執行成功與否;其返回值保存于bash的特殊變量$?中; 其中0表示:執行成功;1-255表示執行錯誤; 例如: [root@localhost ~]# ls anaconda-ks.cfg initial-setup-ks…

    Linux干貨 2016-11-06
欧美性久久久久