中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

正則表達(dá)式及三劍客(grep,awk,sed)詳解-創(chuàng)新互聯(lián)

博文結(jié)構(gòu)
什么是正則表達(dá)式
基礎(chǔ)正則表達(dá)式
延伸正則表達(dá)式
文件的格式化與相關(guān)處理

創(chuàng)新互聯(lián)建站為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、app軟件定制開發(fā)、重慶小程序開發(fā)公司、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

一.grep

正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯。

  • 正則表達(dá)式對(duì)于系統(tǒng)管理員的用途

由于系統(tǒng)如果在繁忙的情況之下,每天產(chǎn)生的訊息信息會(huì)多到你無法想像的地步,而我們也都知道,系統(tǒng)的“錯(cuò)誤訊息登錄文件”的內(nèi)容記載了系統(tǒng)產(chǎn)生的所有訊息,當(dāng)然,這包含你的系統(tǒng)是否被“***”的記錄數(shù)據(jù)

  • 正則表達(dá)式的廣泛用途

在編寫處理字符串的程序時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼。

  • 正則表達(dá)式與shell在linux當(dāng)中的角色定位
    不論是對(duì)于系統(tǒng)的認(rèn)識(shí)與系統(tǒng)的管理部分

  • 延伸的正則表達(dá)式

正則表達(dá)式的字串表示方式依照不同的嚴(yán)謹(jǐn)度而分為:基礎(chǔ)正則表達(dá)式與延伸正則表達(dá)式。延伸型正則表達(dá)式除了簡(jiǎn)單的一組字串處理之外,還可以作群組的字串處理

  • 基礎(chǔ)正則表達(dá)式

1.語系對(duì)正則表達(dá)式的影響

zh_TW.big5 及 C 這兩種語系的輸出結(jié)果分別如下:
LANG=C 時(shí):0 1 2 3 4 ... A B C D ... Z a b c d ...z
LANG=zh_TW 時(shí):0 1 2 3 4 ... a A b B c C d D ... z Z

正則表達(dá)式及三劍客(grep,awk,sed)詳解

2.正則表達(dá)式有三部分組成:

正則表達(dá)式及三劍客(grep,awk,sed)詳解

案例如下:

[root@localhost ~]# grep -n "the" /etc/man_db.conf   
\\-n 顯示行號(hào)  搜尋特定字符串
[root@localhost ~]# grep -vn 'the' /etc/man_db.conf 
\\反轉(zhuǎn)查找 意思就是查找不是‘the’的行顯示出來

[root@localhost ~]# grep -in 'the' /etc/man_db.conf 
\\取得不論大小寫的 the 這個(gè)字串
[root@localhost ~]# grep -n 't[ae]se' /etc/man_db.conf 
\\想要搜尋 test 或 tast 這兩個(gè)單字時(shí),可以發(fā)現(xiàn)到

[root@localhost ~]# grep -n '[^g]oo' /etc/man_db.conf 
\\利用中括號(hào)【】來搜尋集合字符
\\^開頭  $結(jié)束
[root@localhost ~]# grep -n '[0-9]' /etc/man_db.conf 
\\取得有數(shù)字的那一行

[root@localhost ~]# grep -n '^the' /etc/man_db.conf 
\\行首與行尾字符^ $  

中括號(hào)內(nèi)的^表示反向搜尋
中括號(hào)外的^表示以……開頭

[root@localhost ~]# grep -n '^[a-z]' /etc/man_db.conf 
\\查找開頭為小寫字母
[root@localhost ~]# grep -n '^[[:lower:]]' /etc/man_db.conf 
\\這和上面一條一樣都是顯示小寫字母,可以看上面那個(gè)圖
[root@localhost ~]# grep -n '^[^a-zA-Z]' /etc/man_db.conf 
\\不想要開頭是英文字母

[root@localhost ~]# grep -n '\.$' /etc/man_db.conf 
\\找出來,行尾結(jié)束為小數(shù)點(diǎn)(.)的那一行

特別注意到,因?yàn)樾?shù)點(diǎn)具有其他意義所以必須要使用跳脫字符(\)來加以解除其特殊意義

Windows的斷行字符。 (.^M$)
Linux的斷行字符 . (.$)

**. (小數(shù)點(diǎn)):代表“一定有一個(gè)任意字符”的意思;

*(星星號(hào)):代表“重復(fù)前一個(gè)字符, 0 到無窮多次”的意思,為組合形態(tài)
**

[root@localhost ~]# grep -n 'g..d' /etc/man_db.conf 
\\查找g??d共有四個(gè)字符開頭為g,結(jié)尾為d
[root@localhost ~]# grep -n 'ooo*' /etc/man_db.conf 
\\查找至少兩個(gè) o 以上的字串
\\注意,o*為一個(gè)單位,*代表重復(fù)前面的字母無限次
[root@localhost ~]# grep -n 'goo*g' /etc/man_db.conf 
\\字串開頭與結(jié)尾都是 g,但是兩個(gè) g 之間僅能存在至少一個(gè) o
[root@localhost ~]# grep -n '[]0-9[0-9]*' /etc/man_db.conf 
\\找出“任意數(shù)字”的行列
[root@localhost ~]# grep -n 'go\{2,5\}g' /etc/man_db.conf 
\\找出 g 后面接 2 到 5 個(gè) o ,然后再接一個(gè) g 的字串
[root@localhost ~]# grep -n 'go\{2,\}g' /etc/man_db.conf 
\\找出2 個(gè) o 以上的 goooo....g

正則表達(dá)式及三劍客(grep,awk,sed)詳解

正則表達(dá)式及三劍客(grep,awk,sed)詳解

注:“正則表達(dá)式的特殊字符”與一般在命令行輸入指令的“萬用字符”并不相同,例如,在萬用字符當(dāng)中的 代表的是“ 0 ~ 無限多個(gè)字符”的意思,但是在正則表達(dá)式當(dāng)中, 則是“重復(fù) 0 到無窮多個(gè)的前一個(gè) RE 字符”的意思~使用的意義并不相同,不要混了

二.sed

語法如下:
[root@localhost ~]# ]sed [-nefr] [動(dòng)作 ]
選項(xiàng)與參數(shù)如下:
-n :使用安靜(silent)模式。在一般sed的用法中,所有來自STDIN 的數(shù)據(jù)一般都會(huì)被列出到屏幕上。但如果加上-n參數(shù)后,則只有經(jīng)過sed特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來。
-e :直接在命令行界面上進(jìn)行sed的動(dòng)作編輯;
-f :直接將sed的動(dòng)作寫在一一個(gè)文件內(nèi), -f filename 則可以執(zhí)行filename 內(nèi)的sed動(dòng)作;
-r:sed的動(dòng)作支持的是延伸型正則表達(dá)式的語法。(默認(rèn)是基礎(chǔ)正則表達(dá)式語法)
-i:直接修改讀取的文件內(nèi)容,而不是由屏幕輸出。

案例:

[root@localhost ~]# nl /etc/passwd | sed '2,5'd
\\刪除2到5行內(nèi)容
[root@localhost ~]# nl /etc/passwd | sed 'asd'
\\在所有后面行加上asd
[root@localhost ~]# nl /etc/passwd | sed '2a da ....\
aaa'
\\增將兩行以上
[root@localhost ~]# nl /etc/passwd | sed '2,5c    ccccccccccccc'
\\第2-5行的內(nèi)容取代成為ccccccccc
[root@localhost ~]# nl /etc/passwd | sed -n '5,7p'
\\僅列出5到7行的內(nèi)容

部分?jǐn)?shù)據(jù)的搜尋與取代的功能
sed 's/要被取代的字串/新的字串/g'
sed 的“ -i ”選項(xiàng)可以直接修改文件內(nèi)容,

  • 延伸正則表達(dá)式

正則表達(dá)式及三劍客(grep,awk,sed)詳解

正則表達(dá)式及三劍客(grep,awk,sed)詳解

三.awk

awk是一個(gè)強(qiáng)大的工具,相對(duì)于grep的查找,sed的編輯,awk在其對(duì)數(shù)據(jù)分析并生成報(bào)告時(shí),顯得尤為強(qiáng)大。簡(jiǎn)單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行各種分析處理。

語法如下:
[root@localhost ~]# awk '條 件類型1{動(dòng)作1}條件類型2{動(dòng)作2} .. ' filenamne
[root@localhost ~]# last -n 5 | awk '{print $1 "\t" $3}'
\\取出帳號(hào)與登陸者的 IP ,且?guī)ぬ?hào)與 IP 之間以 [tab] 隔開

**整個(gè) awk 的處理流程是:

  1. 讀入第一行,并將第一行的數(shù)據(jù)填入 $0, $1, $2.... 等變量當(dāng)中;
  2. 依據(jù) "條件類型" 的限制,判斷是否需要進(jìn)行后面的 "動(dòng)作";
  3. 做完所有的動(dòng)作與條件類型;
  4. 若還有后續(xù)的“行”的數(shù)據(jù),則重復(fù)上面 1~3 的步驟,直到所有的數(shù)據(jù)都讀完為止。
    **
[root@localhost ~]# last -n 5 | awk '{print $1 "\t lines: "NR"\t columns: "NF}'
root     lines: 1    columns: 10
root     lines: 2    columns: 10
(unknown     lines: 3    columns: 10
reboot   lines: 4    columns: 11
root     lines: 5    columns: 10
     lines: 6    columns: 0
wtmp     lines: 7    columns: 7
[root@localhost ~]# 
\\在awk內(nèi)的NR,NF等變量要用大寫,且不需要$!

正則表達(dá)式及三劍客(grep,awk,sed)詳解

  • awk的邏輯運(yùn)算字符

正則表達(dá)式及三劍客(grep,awk,sed)詳解

  • 邏輯運(yùn)算上面亦即所謂的大于、小于、等于等判斷式上面,習(xí)慣上是以“ == ”來表示;
  • 如果是直接給予一個(gè)值,例如變量設(shè)置時(shí),就直接使用 = 而已。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁題目:正則表達(dá)式及三劍客(grep,awk,sed)詳解-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.rwnh.cn/article26/djgdcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、App設(shè)計(jì)、網(wǎng)站策劃云服務(wù)器、企業(yè)建站、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
同江市| 文昌市| 福建省| 莒南县| 锦屏县| 名山县| 黑河市| 阳谷县| 闸北区| 武胜县| 田林县| 抚宁县| 报价| 榆树市| 嘉兴市| 封丘县| 安徽省| 常熟市| 莎车县| 辛集市| 沿河| 旬阳县| 溧水县| 利川市| 鲁甸县| 溧阳市| 盘山县| 武夷山市| 鹤壁市| 宜黄县| 军事| 天台县| 琼中| 武宁县| 旺苍县| 黑河市| 娄烦县| 同德县| 庆阳市| 建水县| 莱州市|