欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Shell正則表達式之grep、sed、awk實操筆記

Shell正則表達式之grep、sed、awk實操筆記

熱門標簽:百度地圖的地圖標注 百度地圖標注圖標更換 東莞電銷機器人價格一覽表 excel地址地圖標注 旅游地圖標注大全 杭州機器人外呼系統 佛山高德地圖標注中心 陜西電銷卡外呼系統怎么安裝 地圖標注超出范圍怎么辦

最近一直在研究shell腳本這塊,剛好閑下來整了下自己手頭上比較好的資料中的一些范例,以下是我整理的鳥哥私房菜里面正則表達式里面比較基礎的一些語法詳解,適合新手查閱。

首先先復制一段范例:

復制代碼 代碼如下:

# vi regular_express.txt
-------------------------------
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh!My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. 1.
The world Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird
--------------------------------

設置語系為C
復制代碼 代碼如下:
#export LANG=C

grep

1.搜尋特定字符串"the"
注: n為顯示行號

復制代碼 代碼如下:
# grep -n 'the' regular_express.txt

2.反向搜尋特定字符串"the"

復制代碼 代碼如下:
# grep -vn 'the' regular_express.txt

3.取得任意大小寫"the"的這個字符串

復制代碼 代碼如下:
# grep -in 'the' regular_express.txt

4.利用括號 [] 來搜尋集合字符
搜索test或taste這兩個單詞時,發現他們有共同的't?st',所以可以這么搜尋

復制代碼 代碼如下:
# grep -n 't[ae]st' regular_express.txt

這樣其實就是在找t[a]st和t[e]st這兩個分開的字符
如果搜索有 oo 的字符時,則可以使用:
復制代碼 代碼如下:
# grep -n 'oo' regular_express.txt

如果搜索oo時不想搜到 oo 前面有 g 的話,我們可以利用反向選擇[^]來達成:
復制代碼 代碼如下:
# grep -n '[^g]oo'  regular_express.txt

如果搜索oo前面不想有小寫字符,則:
復制代碼 代碼如下:
# grep -n '[^a-z]oo' regular_express.txt

注: 大寫英文/小寫英文/數字 可以使用 [a-z]/[A-Z]/[0-9]等方式來書寫,也可以寫在一起
[a-zA-Z0-9]表示要求字符串是數字以及英文
如果我們要取得有數字的那行,則:
復制代碼 代碼如下:
# grep -n '[0-9]' regular_express.txt

注:但考慮到語系對編碼順序的影響,因此除了連續編碼使用減號[-]外,也可以用[:lower:]代替a-z 以及 [:digit:] 代替0-9 使用
復制代碼 代碼如下:
# grep -n '[^[:lower:]]oo' regular_express.txt
# grep -n '[[:digit:]]' regular_express.txt

5.顯示行首為'the'的字符串

復制代碼 代碼如下:
# grep -n '^the' regular_express.txt

顯示行首是小寫字符
復制代碼 代碼如下:
# grep -n '^[a-z]' regular_express.txt

6.顯示行尾為點 . 的那一行

復制代碼 代碼如下:
# grep -n '\.$' regular_express.txt

7.顯示5-9行數據

復制代碼 代碼如下:
# cat -An regular_express.txt |head -n 10 |tail -n 6

8.顯示空白行

復制代碼 代碼如下:
# grep -n '^$' regular_express.txt

9.找出g??d字符串,起頭g結束d的四個字符串

復制代碼 代碼如下:
# grep -n 'g..d' regular_express.txt

10. o*代表空字符(就是有沒有字符都可以)或者一個到N個o字符,所以grep -n 'o*' regular_express.txt就會把所有行全部打印出來,
11.oo*代表o+空字符或者一個到N個o字符,所以grep -n 'oo*' regular_express.txt就會把o,oo,ooo等的行全部打印出來
12."goo*g"代表gog,goog,gooog...等

復制代碼 代碼如下:
# grep -n 'goo*g' regular_express.txt

13.找出含g...g字符串的行
注: .代表任意字符, .*則就代表空字符或者一個到N個任意字符

復制代碼 代碼如下:
# grep -n 'g.*g' regular_express.txt

14.找出含有數字的行

復制代碼 代碼如下:
# grep -n '[0-9][0-9]*' regular_express.txt

或# grep -n '[0-9]' regular_express.txt

15.找出含兩個o的字符串
注:{}因為在shell里有特殊意義,所以需要加跳脫符\來讓其失去意義

復制代碼 代碼如下:
# grep -n 'o\{2\}'  regular_express.txt

找出g后含2到5個o然后以g結尾的字符串
復制代碼 代碼如下:
# grep -n 'go\{2,5\}g'  regular_express.txt

找出g后含2以上的o然后以g結尾的字符串
復制代碼 代碼如下:
# grep -n 'go\{2,\}g'  regular_express.txt

總結:
^word     表示帶搜尋的字符串(word)在行首
word$     表示帶搜尋的字符串(word)在行尾
.         表示1個任意字符
\&;        表示轉義字符,在特殊字符前加\會將原本的特殊字符意義去除
*         表示重復0到無窮多個前一個RE(正則表達式)字符
[list]    表示搜索含有list的字符串
[n1-n2]   表示搜索指定的字符串范圍,例如[0-9] [a-z] [A-Z]等
[^list]   表示反向字符串的范圍,例如[0-9]表示非數字字符,[A-Z]表示非大寫字符范圍
\{n,m\}   表示找出n到m個前一個RE字符
\{n,\}    表示n個以上的前一個RE字符
egrep總結:
+    表示重復一個或一個以上的前一個RE字符
范例:egrep 'go+d' regular_express.txt
表示搜尋(god)(good)(goood)...等等字符串,o+代表[一個以上的o]
?    表示重復零個或一個的前一個RE字符
范例:egrep 'go?d' regular_express.txt
表示搜尋(gd)(god)字符串,o?代表[空的或1個o]
注:egrep下'go+d'和'go?d'的結果集合就等于grep下的'go*d'
|    表示用或(or)的方式找出數個字符串
范例:egrep 'gd|good|dog' regular_express.txt
表示搜尋(gd)或(god)或(god)字符串,|代表或
()    表示找出群組字符串
范例:egrep 'g(la|oo)d' regular_express.txt
表示搜尋(glad)或(good)字符串
()    +表示找出多個重復群組的判別
范例: echo 'AxyzxyzxyzxyzxyzC'|egrep 'A(xyz)+C'
表示搜尋開頭是A結尾是C,中間有一個以上的'xyz'字符串

sed:

插入:

1.將/etc/passwd 的內容列出并打印行號,同時,將2-5行刪除顯示

復制代碼 代碼如下:
# nl /etc/passwd | sed '2,5d'

注: sed是sed -e的簡寫, 后接單引號
同上刪除第2行
復制代碼 代碼如下:
# nl /etc/passwd | sed '2d'

同上刪除第三行到最后一行
復制代碼 代碼如下:
# nl /etc/passwd | sed '3,$d'

2.在第二行后加上一行test

復制代碼 代碼如下:
# nl /etc/passwd | sed '2a test'

在第二行前加上一行test
復制代碼 代碼如下:
# nl /etc/passwd | sed '2i test'

在第二行后加入兩行test
復制代碼 代碼如下:
# nl /etc/passwd | sed '2a test \
> test'

替換行:

3.將2-5行內容取代為 No 2-5 number

復制代碼 代碼如下:
# nl /etc/passwd | sed '2,5c No 2-5 number'

4 列出/etc/passwd 內第5-7行

復制代碼 代碼如下:
# nl /etc/passwd |sed -n '5,7p'

替換字符串:

sed 's/被替換字符串/新字符串/g'

1.獲取本機IP的行

復制代碼 代碼如下:
# /sbin/ifconfig eth0 |grep 'inet addr'

將IP前面的部分予以刪除
復制代碼 代碼如下:
# /sbin/ifconfig eth0 |grep 'inet addr'| sed 's/^.*addr://g'

將IP后面的部分刪除
復制代碼 代碼如下:
# /sbin/ifconfig eth0 |grep 'inet addr'| sed 's/^.*addr://g'| sed 's/Bcast:.*$//g'
-------------------
192.168.100.74
-------------------

2.用grep將關鍵詞MAN所在行取出來

復制代碼 代碼如下:
# cat /etc/man.config |grep 'MAN'

刪除批注行
復制代碼 代碼如下:
# cat /etc/man.config |grep 'MAN'| sed 's/^#.*$//g'

刪除空白行
復制代碼 代碼如下:
# cat /etc/man.config |grep 'MAN'| sed 's/^#.*$//g'| sed '/^$/d'

3.利用sed將regular_express.txt內每一行若為.的換成!
注:-i參數會直接修改文本,而并非直接輸出

復制代碼 代碼如下:
# sed -i 's/.*\.$/\!/g' regular_express.txt

4.利用sed在文本最后一行加入 #This is a test
注: $代表最后一行 a代表行后添加

復制代碼 代碼如下:
# sed -i '$a #This is a test' regular_express.txt

將selinux配置文件enforcing改成disabled
復制代碼 代碼如下:
# sed -i '6,6c SELINUX=disabled' /etc/selinux/config

延伸正規表示法:
復制代碼 代碼如下:
# grep -v '^$' regular_express.txt |grep -v '^#'

延伸寫法:
復制代碼 代碼如下:
# egrep -v '^$'|'^#' regular_express.txt

1. +表示重復一個或一個以上的前一個RE字符

例如:egrep -n 'go+d' regular_express.txt
普通寫法: grep -n 'goo*d' regular_express.txt

2. ?表示重復零個或一個前一個RE字符

例如: egrep -n 'go?d' regular_express.txt

3. |表示用或的方式找出數個字符串

例如: egrep -n 'gd|good' regular_express.txt

4. ()表示找出群組字符串

例如: egrep -n 'g(la|oo)d' regular_express.txt
也就是搜尋(glad)或good這兩個字符串

5. ()+多個重復群組判別

例如: echo 'AxyzxyzxyzxyzC'|egrep 'A(xyz)+C'

也就是要找開頭是A結尾是C 中間有一個以上的'xyz'字符串的意思

awk:

1.用last取出登陸數據前五行

復制代碼 代碼如下:
# last -n 5

取出賬號與登陸者IP,且賬號與IP之間以TAB隔開
復制代碼 代碼如下:
# last -n 5 |awk '{print $1 "\t" $3}'

注:$1代表用空格或TAB隔開的第一個字段,以此類推。。
  $0代表該行全部字段
復制代碼 代碼如下:
# last -n 5 |awk '{print $1 "\t lines:" NR "\t columes:" NF}'

注: NF代表每一行的$0的字段總數
   NR代表目前awk所處的是第幾行數據
   FS代表目標分隔符,默認為空格

2.在/etc/passwd中以:來作為分段字符,則我們要查閱第三欄小于10以下的數據,并只列出賬號與第三欄

復制代碼 代碼如下:
# cat /etc/passwd | awk '{FS=":"} $310 {print $1 "\t \t"$3}'

注:查詢結果未顯示第一行數據,是因為我們雖然定義了FS=":" 但卻只能在第二行生效
想讀取第一行就需要BEGIN這個關鍵詞:
復制代碼 代碼如下:
# cat /etc/passwd | awk 'BEGIN {FS=":"} $310 {print $1 "\t \t"$3}'

df:
比較兩個文件的差異:

復制代碼 代碼如下:
# diff /etc/rc3.d/ /etc/rc5.d/
-------------------
Only in /etc/rc3.d/: K30spice-vdagentd
Only in /etc/rc5.d/: S70spice-vdagentd
-------------------

實例:
1。統計TCP連接狀態

復制代碼 代碼如下:
# netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
/^tcp/

過濾出以tcp開頭的行,“^”為正則表達式用法,以...開頭,這里是過濾出以tcp開頭的行。
S[]
定義了一個名叫S的數組,在awk中,數組下標通常從 1 開始,而不是 0。
NF
當前記錄里域個數,默認以空格分隔,如上所示的記錄,NF域個數等于
$NF
表示一行的最后一個域的值,如上所示的記錄,$NF也就是$6,表示第6個字段的值,也就是SYN_RECV或TIME_WAIT等。
S[$NF]
表示數組元素的值,如上所示的記錄,就是S[TIME_WAIT]狀態的連接數
++S[$NF]
表示把某個數加一,如上所示的記錄,就是把S[TIME_WAIT]狀態的連接數加一
結果就是顯示S數組中最終的數組值
例:S[TIME_WAIT]=最終值 S[TESTABLISHED]=最終值
END
for(key in S)
遍歷S[]數組
print key,”\t”,S[key]
打印數組的鍵和值,中間用\t制表符分割,顯示好一些。

PS:關于正則,本站還提供了2款非常簡便實用的正則表達式在線工具供大家參考使用:

JavaScript正則表達式在線測試工具:http://tools.jb51.net/regex/javascript

正則表達式在線生成工具:http://tools.jb51.net/regex/create_reg

您可能感興趣的文章:
  • shell腳本之正則表達式、grep、sed、awk
  • Shell中正則表達式及sed和awk常見問題

標簽:西藏 雅安 隨州 青島 朝陽 南充 通遼 延邊

巨人網絡通訊聲明:本文標題《Shell正則表達式之grep、sed、awk實操筆記》,本文關鍵詞  Shell,正則,表達式,之,grep,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell正則表達式之grep、sed、awk實操筆記》相關的同類信息!
  • 本頁收集關于Shell正則表達式之grep、sed、awk實操筆記的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    免费在线观看视频一区| 亚洲色图第四色| 欧美天天综合网| 亚洲老司机在线| 99视频热这里只有精品免费| 性欧美videos| 国产精品日韩精品欧美在线| 国产成人丝袜美腿| 四虎地址8848| 国产精品视频线看| 成人毛片老司机大片| 亚洲人与黑人屁股眼交| 日本一区二区在线不卡| 国产精品一区二区免费不卡 | 欧美国产精品中文字幕| 国产乱码精品一区二区三区av | 经典一区二区三区| 日韩一级av毛片| 久久久另类综合| 国产一区二区三区免费| 在线视频这里只有精品| 中文字幕在线一区免费| av在线一区二区| 欧美网站大全在线观看| 亚洲成人免费看| 草草地址线路①屁屁影院成人| 日韩欧美久久一区| 精品一区二区三区影院在线午夜| eeuss中文字幕| 中文字幕日韩av资源站| 91亚洲精品乱码久久久久久蜜桃| 欧美揉bbbbb揉bbbbb| 亚洲.国产.中文慕字在线| 一区二区三区少妇| 久久综合资源网| 大白屁股一区二区视频| 欧美性生活一区| 日韩中文字幕1| 黄色免费一级视频| 亚洲欧美色图小说| 亚洲图片综合网| 久久久亚洲精华液精华液精华液| 成人午夜大片免费观看| 欧美日本一区二区三区四区| 奇米777欧美一区二区| 国产人与禽zoz0性伦| 亚洲女人的天堂| 亚洲av无码一区二区三区网址| 久久先锋影音av鲁色资源网| 成人美女在线观看| 在线91免费看| 国产剧情一区在线| 在线观看国产一区二区| 免费在线欧美视频| 国模无码国产精品视频| 日韩精品久久理论片| 成人18视频免费69| 亚洲一区二区3| 卡一卡二卡三在线观看| 亚洲欧美一区二区三区国产精品 | 亚洲人人夜夜澡人人爽| 中文字幕av一区二区三区| 亚洲欧美日韩中文字幕在线观看| 日韩免费视频一区二区| 成人激情图片网| 欧美一级片免费看| 成人午夜私人影院| 精品一区二区三区在线观看国产| 国产精品精品软件男同| 亚洲一区成人在线| 亚洲欧美另类日本| 午夜精品国产更新| 成人自拍小视频| 日韩av在线发布| 国产十六处破外女视频| 蜜臂av日日欢夜夜爽一区| 色94色欧美sute亚洲线路一ni| 美国十次综合导航| 欧美在线free| 国产成人午夜99999| 日韩一本二本av| 91网站最新网址| 国产欧美日韩精品在线| 亚洲h精品动漫在线观看| 91精品国自产在线| 天堂av在线一区| 色综合久久综合| 国内精品国产三级国产a久久| 欧美午夜不卡视频| 粉嫩aⅴ一区二区三区四区五区| 91精品国产色综合久久不卡电影| 国产91精品一区二区麻豆网站| 欧美成人精品1314www| 91美女片黄在线| 国产精品色哟哟| 国内精品卡一卡二卡三| 亚洲gay无套男同| 色狠狠色噜噜噜综合网| 国产精品一区2区| 精品国产麻豆免费人成网站| 无码人妻久久一区二区三区蜜桃| 中文字幕亚洲综合久久菠萝蜜| mm131丰满少妇人体欣赏图| 亚洲国产精品久久人人爱| 天天干中文字幕| 国产精品一线二线三线精华| 精品国产伦理网| 国产福利短视频| 亚洲成a人片在线不卡一二三区| 91成人在线精品| www.欧美色图| 国产精品久久久久国产精品日日| 五月激情四射婷婷| 精品一区二区成人精品| 日韩欧美一二区| 第四色在线视频| 视频在线在亚洲| 正在播放一区二区| 99精品一区二区三区无码吞精| 亚洲黄色片在线观看| 色天天综合久久久久综合片| 国产91综合网| 成人免费在线播放视频| 国产精品视频一区二区三| 高清成人免费视频| 国产精品久久三| 放荡的美妇在线播放| 成人黄色国产精品网站大全在线免费观看| 国产日产欧美精品一区二区三区| 天堂在线中文视频| 国产精品夜夜嗨| 国产精品色婷婷| 日本久久一区二区| 欧美熟妇另类久久久久久多毛| 一区二区三区在线观看视频| 在线观看日韩一区| 亚洲成人福利视频| 亚洲成a人片综合在线| 欧美一级一级性生活免费录像| 久久亚洲AV成人无码国产野外 | 欧美性三三影院| av电影中文字幕| 污片在线观看一区二区| 欧美xxxx老人做受| 懂色av蜜桃av| 懂色av中文一区二区三区| 日韩美女视频一区二区| 欧美日韩一区三区| 中文字幕影片免费在线观看| 美女视频一区二区| 亚洲国产精品99久久久久久久久| 乱h高h女3p含苞待放| 潘金莲一级淫片aaaaaaa| 日日夜夜一区二区| 久久青草欧美一区二区三区| 91香蕉视频在线播放| 91一区二区在线| 日韩精品亚洲专区| 久久久亚洲午夜电影| 色综合中文字幕国产 | 欧美日韩一区在线| 中文字幕在线观看的网站| 国产精品一区二区三区四区| 亚洲欧美色图小说| 欧美一区二区三区精品| 人人妻人人澡人人爽| 成年人国产精品| 亚洲va国产天堂va久久en| www国产亚洲精品久久麻豆| 在线看的片片片免费| 一二三区视频在线观看| 麻豆成人综合网| 亚洲欧洲99久久| 538在线一区二区精品国产| 人人妻人人澡人人爽| 99在线精品一区二区三区| 日韩精品久久理论片| 国产精品欧美经典| 91精品国模一区二区三区| 91大神福利视频| 丰满熟女人妻一区二区三区| 狠狠色综合日日| 一区二区日韩电影| 精品动漫一区二区三区在线观看| 国产精品久久久久久久精| 特大黑人巨人吊xxxx| 成人白浆超碰人人人人| 免费观看30秒视频久久| 亚洲天堂成人在线观看| 欧美成人精品二区三区99精品| 一本色道久久综合亚洲aⅴ蜜桃| 少妇户外露出[11p]| 成人app下载| 美国av一区二区| 一区二区三区四区高清精品免费观看| 欧美不卡一二三| 欧美性猛片aaaaaaa做受| 国产视频123区| 成人免费无码大片a毛片| 成人h精品动漫一区二区三区|