shell指令碼 grep以及正規表示式

2022-08-22 07:18:10 字數 3000 閱讀 6148

grep命令

1、grep程式:linux三劍客--grep、awk、sed

2、grepl:文字  行過濾工具

awk:報告生成器(做文字輸出格式化)

3、grep包含三個命令:grep、egrep、fgrep,它們是用來進行 行模式(pattern)匹配的

egrep=grep -e    //使用擴充套件的正規表示式進行匹配 

fgrep=fast grep    //只使用檔案萬用字元進行匹配

*grep預設使用正規表示式進行文字匹配

4、grep命令的用法:grep [option].....pattern  [filename]

5、grep的常見引數:-e(支援使用擴充套件的正規表示式,regexp(正規表示式))

-p(使用per語言的正規表示式引擎進行搜尋(每一種語言的正規表示式引擎都不相同,甚至sed grep awk使用的正規表示式引擎也不相同))

-i(忽略大小寫)、-v(進行反選)、-n(顯示行號)、--color(顯示著色)

-o(僅僅輸出匹配的內容,預設輸出的是匹配到的行)

pattern---正規表示式

1、作用:通過一些特殊字元,來表示一類字元內容,然後交給前面的命令來執行,如果使用特殊字元本身含義,就需要進行\進行轉義;

2、字元匹配:.(代表任意乙個字元,相當於?)、[ ](匹配範圍內的乙個字元)、  [^](範圍外的乙個字元) 

字元類:[:digit:](數字)  [:alnum:](數字和大小寫字母)  [:alpha:](大小寫字母)  [:lower:](小寫字母)  

[:upper:] (大寫字母)  [:space:](空格)  [:punct:](特殊符號)

3、次數匹配:*(匹配前面的字元0次到n(無數)次)

?(匹配前面的字元0次到1次)

+(匹配前面的字元1次到n次)

\(匹配前面的乙個字元m次)

\(匹配前面的字元m到n(固定的數值)次)

\(匹配前面的字元至少m次)

4、位置錨定:^(錨定行首)

$(錨定行尾)

\b(錨定詞首和錨定詞尾)

\>(錨定詞尾)

\5、分組特性:預設情況下,linux系統會分組指定變數,變數的表示形式\1\2\3..

分組字元:分組字元:\(\)(示例:\(abc\)*-----匹配0到n次的abc)

if語句:

在某些條件下,如果不滿足該條件,我們必須手動退出程式,否則後面的**無法執行;

指定輸出碼:exit 0、exit 1

在程式錯誤輸出的時候,可以用來判斷程式錯誤的地方

exit退出碼,後面的數值是可以自己定義的,一般正確為0,而錯誤則為非0即可。

練習:1、顯示/proc/meminfo檔案中以大小s開頭的行

1grep-i"^s"/proc/meminfo

2、顯示/etc/passwd檔案中不以/bin/bash結尾的行

1grep-v"/bin/bash$"/etc/passwd

3、顯示/etc/passwd檔案中uid號最大的使用者的使用者名稱

1sort-n -t: -k3/etc/passwd|tail-1 |cut-d: -f1

4、如果使用者root存在,顯示其預設的shell程式

方法一:

1grep"^root\>"/etc/passwd&>/dev/null&&grep"^root\>"/etc/passwd|cut-d: -f7

方法二:

1idroot &>/dev/null&&grep"^root\>"/etc/passwd|cut-d: -f7

5、找出/etc/passwd中的兩位或三位數

1grep-w"[0-9]\"/etc/passwd

6、顯示/etc/rc.d/rc.sysinit檔案中,至少以乙個空白字元開頭的切後面為非空白字元的行

1grep"^[[:space:]]\+.*[^[:space:]]$"/etc/rc.d/rc.sysinit

7、找出」netstat -tan」命令的結果中,以」listen」後跟0、1或多個空白

1netstat-tan |grep"listen[[:space:]]*$"

8、新增使用者bash、testbash、basher以及nologin(其shell為/sbin

login)而後找出/etc/passwd檔案中使用者名稱同shell名的行 

shell指令碼學習筆記之grep 正規表示式

grep命令是linux中一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep的主要引數 c 只輸出匹配行的計數。i 不區分大小寫 只適用...

shell指令碼 grep和正規表示式

1 grep程式 1 命令 grep egrep fgrep,用來進行 行模式 pattern手動寫 匹配的 egrep grep e 使用正規表示式進行匹配 fgrep fast grep 只使用檔案萬用字元進行匹配 grep預設使用正規表示式進行文字匹配 2 用法 grep option pat...

shell指令碼學習(二) grep

1.grep egrep c 列印符合要求的行數 n 在輸出符合要求的行的同時連同行號一起輸出 v 列印不符合要求的行 r 會把目錄下面所有的檔案全部遍歷一遍 i 忽略大小寫 2.例子介紹 grep n root 1.txt grep n v root 1.txt 過濾出所有包含數字行 grep n...