正則表達式

1:什么是正則表達式:

簡單的說,正則表達式就是處理字符串的方法,它是以行為單位進行字符串的處理行為,正則表達式通過一些特殊符號的輔助,可以讓用戶輕易達到查找,刪除,替換某特定字符串的處理程序。

2:一些參數:
grep [-A] [-B] [–color=auto] ‘收索字符串’ filename

-A :后面可加數字,為after的意思,除了列出該行以外,后續的n行也被列出來。

-B :后面可加數字,為befer的意思,除了列出該行以外,前面的n行也被列出來。

–color=auto:可將正確的那個選取數據列出顏色

范例一:

dmesg | grep ‘eth’

#dmesg 可以列出內核的信息,通過grep選取網卡相關信息。

范例二:

dmesg | grep -n –color-auto ‘eth’

[root@Slave0 hadoop]# dmesg | grep -n –color=auto ‘eth’
452:[   11.213498] 8021q: adding VLAN 0 to HW filter on deviceeth0
發現除了eth會有特殊的顏色,且加上行號顯示。

三:基礎正則表達式練習:

1:查找特定字符串

[root@Master ~]# grep -n ‘ab’ newusers
5:Annabell:Cho:90:1
8:Rebecca:Fabry:60:1
[root@Master ~]# 

如果反向選擇呢?也即是說該行沒有‘ab’這個字符串才會顯示在屏幕上

[root@Master ~]# grep -vn ‘ab’ newusers
1:Betsey:Werts:60:1
2:Henriette:Balla:30:1
3:Julieann:Hopps:30:2
4:Conrad:Menz:60:1
6:Allyn:Kenley:60:1

2:利用中括號[]來查找集合字符。

如果我想找testhe taste這兩個單詞,可以發現,他們共同有‘t?st’存在,這個時候,我們可以這樣查找。

grep -n ‘t[ae]st’ newusers

如果查找到有dd字符時,則使用:

grep -n ‘dd’ newusers

如果不想要dd前面有g,此時可以可用集合字符的反向選擇[^]來完成。

grep -n ‘[^g]dd’ newusers

3:行首和行尾字符^$

如果想要字符串‘the’只在行首才列出,之格式化就要用到制表符了,做法如下:

grep -n ‘^the’ filename

如果要列出字母開頭

grep -n ‘^[a-z]’ filename

如果不想要開頭是字母的

grep -n ‘^[^a-zA-Z]’ filename

注:那個^符號在字符集合符號(中括號[])之內與之外是不一樣的,在【】代表“反向選擇”,在【】之外則代表定外在行首的意義。

那么如果要找出行位結束為小數點(.)的那一行,該怎么處理呢?

 grep -n ‘\.$’ filename

特別注意,小數點具有其他意義,所以必須使用轉義字符(\)加以解除他的特殊意義。

如果要找出空白行:

grep -n ‘^$’ filename

4:任意一個字符.與重復字符*

.(小數點):代表一定有一個任意字符的意思

grep -n ‘g..d’ filename

[root@Master ~]# grep -n a..a newusers
2:Henriette:Balla:30:1
21:Elsa:Casazza:60:3

*(星號):代表重復前一個0到無窮多次的意思,為組合形態。

grep -n ‘ooo*’ filename

注,前兩個o肯定要必須存在,第三個o則是可有可無的多個o

四:基礎正則表達式字符:

RE字符

意義和范例

^word

查找(word)在行首

word$

查找(word)在行尾

.

代表一定有一個任意的字符

\

將特殊符號的特殊意義去除

*

重復零個到無窮多個的前一個字符

[list]

從字符集合的RE字符里面找出想要選取的字符

[n1-n2]

從字符集合的RE字符里面找出想要選取的字符范圍.如:grep -n ‘[0-9]’ filename

[^list]

從字符集合的RE字符里面找出不要的字符串范圍。

\{n,m\}

連續n到m個前一個RE字符,若為\{n\}則是連續n個的前一個RE字符,若為\{n,\}則是連續
n個以上的前一個RE字符,
范例:在g與g之間有2到3個o存在的字符串即(goog)(gooog)
grep -n ‘go\{2,3\}g’ filename

 

五:擴展正則表達式:

grep默認僅支持基礎正則表達式,如果使用擴展型正則表達式,可以使用grep -e 不過更建議直接使用egrep.

擴展型正則表達式的特殊字符

+

重復一個或一個以上的前一個RE字符

?

零個或者一個前一個RE字符

|

用或(or)的方式找出數個字符串,
例:查找gd或者good這兩個字符串
egrep -n ‘gd|good’ filename

()

找出“組” 字符串
如,找出(glad)或(good)這兩個字符串
egrep -n ‘g (la|oo) d’ filename

()+

多個重復組判別

 

 

 

 

 

 

 

 l六:練習

Lifconfig 192.168.0.211

H獲取IP

#I if config |grep  [0-9]\{1,3\}  獲取第一位“198“ 一到三位數字

               \ ([0-9}\{1,3\}\.\)\{3\} 分成一個組后給其三位“198.

                “\ ([0-9}\{1,3\}\.\)\{3\} [0-9]\{1,3}”  最后給第四組加上

 正則表達式

 

 

 

1,刪除文件每行的第一個字符:sed -r ‘s/^.//g’ passwd

正則表達式

 

2,刪除文件每行的第二個字符:sed -r ‘s/^(.)(.)/\2/g’ passwd

正則表達式

 

3,刪除文件每行的最后一個字符:sed -r ‘s/(.)$//g’ 

正則表達式

 

4,刪除文件每行的倒數第二個字符: sed -r ‘s/(.)(.)$/\2/g’ passwd

正則表達式

 

5,刪除文件每行的第二個單詞:sed -r ‘s/^([a-Z])([^0-9][^a-Z])(a-Z)/\1\2/g’ passwd

 正則表達式

 

 

 

 

 

 

原創文章,作者:linux-qiao,如若轉載,請注明出處:http://www.www58058.com/83205

(0)
linux-qiaolinux-qiao
上一篇 2017-07-29
下一篇 2017-07-29

相關推薦

  • Linux常用命令使用方法

    下面以一些常用的Linux命令為例講解一下Linux命令的使用方法。 1.  ifconfig – 配置網絡接口 | 對象 | 參數 | 含義 || —— | —— | —— |網卡名 | / | 查看指定網卡IP的地址,不指定默認查看所有網卡地址網卡名 | up …

    Linux干貨 2017-09-01
  • vim文本編輯器

    vi簡介 vi:Visual Interface,是一種功能強大的文本編輯器,工作在字符模式下,它可執行輸出、輸出、查找、替換、塊等眾多文本操作,不需要圖形界面,因此執行起來效率會非常高,主要用來編輯純文本文件,常見的編碼有,ASCII,Unicode等等 文本編輯器的種類:     行編輯器:逐行來對文本進行處理的工…

    Linux干貨 2016-08-15
  • Linux磁盤管理

    設備文件 一切皆文件 open(), read(), write(), close() 磁盤結構 磁盤接口類型 并行 IDE:133MB/s SCSI:640MB/s 串口 SATA:6Gbps SAS:6Gbps USB:480MB/s rpm rotationsper minute 硬盤每分鐘轉數 硬盤結構  圖一…

    Linux干貨 2016-08-30
  • 馬哥教育面授班22期:第一天課程練習

    Linux發展史:        1984年:Richard Stallman發起GNU項目和自由軟件基金會創建開源的UNIX實用工具版本        創建通用公共許可證(GPL)        1991年:Linux Torvalds發…

    Linux干貨 2017-05-16
  • RAID詳解

    1、什么是RAID RAID:獨立硬盤冗余陣列,舊稱廉價磁盤冗余陣列,簡稱磁盤陣列。其基本思想就是將多個相對便宜的硬盤結合起來,成為一個磁盤陣列,是性能達到甚至超過一個昂貴、容量巨大的硬盤,根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。目前應用較多的有RAID0,RAID1,RAID4,RA…

    Linux干貨 2017-01-03
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣帶漸寬終不悔,為伊消得人憔悴。—王國維《人間詞話》 轉眼已到了27歲的年紀,不知道自己是否還稱得上少年。公交上讓座被小朋友成為叔叔也都是很多年的事了。哪怕再有一顆少年心現在也要肩負起整個家庭的責任。 從畢業已工作了將近六個年頭,無聊的工作平凡的薪水已經使我厭倦。閉上眼睛以后需要贍養四個老人,還要照顧孩子以后這些難題映入腦海。曾經以為遙遠的…

    Linux干貨 2017-07-11
欧美性久久久久