柚子快報(bào)邀請碼778899分享:Linux中的正則表達(dá)式
柚子快報(bào)邀請碼778899分享:Linux中的正則表達(dá)式
在說正則表達(dá)式之前再加幾個(gè)小知識(shí)
1、輸出重定向:
標(biāo)準(zhǔn)輸出:是將信息輸出在終端上
標(biāo)準(zhǔn)錯(cuò)誤輸出:在執(zhí)行命令的過程中所產(chǎn)生的錯(cuò)誤信息也是輸出在終端上的
標(biāo)準(zhǔn)輸出:是從鍵盤輸入的
1.1、標(biāo)準(zhǔn)輸出重定向
?作用:將本來要顯示在終端上的信息重定向到一個(gè)文件中
實(shí)現(xiàn)方法:
用:
? ? >? ? ? ? ? ? ? ? ? ? ? ? 將文件中原有的內(nèi)容全部刪除,然后進(jìn)行寫入
? ? >>? ? ? ? ? ? ? ? ? ? ? 在文件原有的內(nèi)容之后,追加新的內(nèi)容
例如:在終端上輸出123并追加到a.txt里
echo "123" >> a.txt?
1.2、標(biāo)準(zhǔn)錯(cuò)誤輸出?
實(shí)現(xiàn)方法:
2>????????????????將文件中原有的內(nèi)容全部刪除,然后進(jìn)行寫入
2>>? ? ? ? ? ? ? 將文件中原有的內(nèi)容全部刪除,然后進(jìn)行寫入
例如:將ls /sdjfl 這個(gè)命令追加到黑洞文件(/dev/null)
ls /sdifl 2>> /dev/null?
2、通配符
2.1、*:表示任意長度的任意字符
例子:刪除根下以
a
開頭文件
???????????rm -rf a*
2.2、?:表示一個(gè)長度的任意字符
例子:刪除根下文件名第二個(gè)是
a
的文件
???????????rm -rf ?a
2.3、;:鏈接多個(gè)命令
? ? cd -;cd -? ? ? ? 返回上上次所在的路徑
&&:只有前面的命令執(zhí)行成功后,后面的命令才會(huì)執(zhí)行
||:只有前面命令執(zhí)行失敗后,后面的命令才會(huì)執(zhí)行
2.4、#:注釋行(描述信息,但是不執(zhí)行)
2.5、|:傳遞命令的執(zhí)行結(jié)果
2.6、~:返回當(dāng)前用戶的家目錄
2.7、-:返回上次所在目錄
2.8、$:變量前要加的符號(hào)
2.9、/:路徑分隔符(或者是根)
2.10、“>? >>”:標(biāo)準(zhǔn)重定向
2.11、”?<<“:標(biāo)準(zhǔn)錯(cuò)誤重定向
? ? ? ? 用來打印菜單
? ? ? ? cat < ? ? ? ? >1 ????????>2 ? ? ? ? >EOF? ? ? ? #結(jié)尾退出用這個(gè) 2.12、引號(hào) ' ' : 弱引用,引用的內(nèi)容原樣輸出 " " : 強(qiáng)引用,引用中變量會(huì)變成變量的值 `` : 命令替換 ?2.13、點(diǎn)(.) ????????表示當(dāng)前目錄 ????????..上一級目錄 2.14、花括號(hào)擴(kuò)展:{} 用法: ? ? ? ? 創(chuàng)建1.dir到10.dir目錄 ????????mkdir {1..10}.dir 正則表達(dá)式簡介: 構(gòu)成:是由一堆的特殊符號(hào)和字母構(gòu)成的(元字符) 作用:通過對文本中的內(nèi)容進(jìn)行過濾,然后對文件中的內(nèi)容進(jìn)行過濾 ?正則表達(dá)式的種類: ? ? ? ? 基礎(chǔ)正則表達(dá)式、擴(kuò)展正則表達(dá)式 通常結(jié)合三個(gè)命令來使用(又稱三劍客) ? ? ? ? grep、sed、awk 今天我們來學(xué)習(xí)grep命令 grep命令 作用:對文件中的內(nèi)容進(jìn)行過濾 格式:grep 選項(xiàng) 匹配內(nèi)容 文件名 選項(xiàng): ? ? ? ? -v:取反 ? ? ? ? -o:僅僅顯示處所匹配的內(nèi)容 ? ? ? ? -E:使用擴(kuò)展 ? ? ? ? -i:忽略大小寫 ?通配符和正則的區(qū)別:!?。?! 通配符是對文件名進(jìn)行匹配,但是正則表達(dá)式是對文件中的內(nèi)容進(jìn)行匹配的 ?正則中的元字符 1、匹配單個(gè)字符 點(diǎn)(.)代表一個(gè)任意字符 2、[ ]:表示范圍中的其中任意一個(gè) [123456]:表示匹配中的其中一個(gè) [0-9]:表示匹配所有的數(shù)字 [A-Z]:表示匹配所有大寫的字母 [a-z]:匹配所有小寫的字母 [a-Z]:匹配所有的字母 3、用字符集的方式表達(dá) [[:space:]]:表示一個(gè)空格 [[:digit:]]:表示任意一個(gè)數(shù)字 [[:lower:]]:表示任意一個(gè)小寫字母 [[:upper:]]:表示任意一個(gè)大寫字母 [[:alpha:]]:表示任意一個(gè)字母 [[:alnum:]]:表示任意一個(gè)字母+數(shù)字 [[:punct:]]:表示任意一個(gè)標(biāo)點(diǎn)符號(hào) 4、^[ ]:表示以中括號(hào)開頭的行 ? ? ? ?[^ ]:表示除了中括號(hào)里面的行 例子:過濾沒有包含 qaz 的行 grep [^qaz] file 5、顯示匹配到的行前后的若干行 -An:顯示匹配到的內(nèi)容的后n行 -Bn:顯示匹配到的內(nèi)容的前n行 -Cn:顯示匹配到的內(nèi)容的前后n行 ?例子:匹配包含root的行的前3行 grep -B3 "root" file 6、次數(shù)匹配 "*":代表前面的字符出現(xiàn)了任意次數(shù)(0-n次) ".*":代表任意長度的任意字符 "?":代表其前面的字符出現(xiàn)最多一次(注意:要結(jié)合-E使用) 例子:grep -E "a{1,}b" 11.txt b前面的a至少1次最多不限 \{m,n\}:表示前面字符出現(xiàn)最少m次,最多出現(xiàn)n次(當(dāng)用-E的時(shí)候可以不加\) 例:-E a{m,n}b 7、位置錨定 ^n:表示以n為開頭的行 n$:表示以n為結(jié)尾的行 \ n\>:表示單詞尾部以n為結(jié)尾的行 ^$:表示顯示空白行 8、分組 \( \) :將括號(hào)里面的內(nèi)容看作一個(gè)整體 \1:表示引用第一個(gè)分組 \2:表示引用第二個(gè)分組 例子:在11.txt中,過濾出出現(xiàn)過倆個(gè)相同數(shù)字的行 grep "\([[:digit:]]\).*\1" 11.txt 擴(kuò)展正則表達(dá)式: 格式是: 格式1:grep -E 匹配內(nèi)容 文件 格式2:egrep 匹配內(nèi)容 文件 +等同于{1, }:其前面的字符至少出現(xiàn)1次 或(|) 例子:過濾出開頭是 a (不區(qū)分大小寫)的行 egrep "^(a|A)" 11.txt egrep "^[aA]" 11.txt 柚子快報(bào)邀請碼778899分享:Linux中的正則表達(dá)式 好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。