grep與正規表示式

2022-08-31 12:09:10 字數 2416 閱讀 2654

一、grep程式

1、linux下有文字處理三劍客:grep sed awk

grep:文字 行過濾工具

sed : 文字行編輯器(流編輯器),改檔案一般用sed

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

2、grep

包含三個命令:它們是用來進行行匹配(pattern)匹配的

(1)grep的分類

grep

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

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

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

(2)grep的用法

grep [option] … pattern [filename]

(3) grep的常見選項

-e 支援使用擴充套件的正規表示式(ere)regexp

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

-i  忽略大小寫

-v  進行反選             

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

--color=auto 語法著色

-n  顯示行號

二、pattern—正規表示式

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

1、 字元匹配

.  代表任意乙個字元 ?

[ ] 代表範圍內的任意乙個字元

[^ ] 代表範圍外的任意乙個字元

[0-9] [:digit:] [:alnum:][:alpha:][:upper:][:space:][:punct:]

2、 次數匹配

* 匹配前面的字元0到無數次

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

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

\ 匹配前面的字元m次

\ 匹配前面的字元m到n次

\ 匹配至少m次

示例:[abc] + abbbbcccc

a\  匹配a7次,即aaaaaaa

\ 匹配前面的字元0次到n次 【0次要不要】

3、 位置錨定

^  錨定行首

$  錨定行尾

\b 錨定詞首和錨定詞尾

\> 錨定詞尾

<\ 錨定詞首

示例:<\root\>  //錨定單個單詞

4、 分組

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

abc* ->abcccccc   此時我們需要把abc看成乙個整體

示例:\(abc\)* -> abcabcabc

\(ab+\(xy\)*\),其中\1=ab+\(xy\)*,\2=xy

三、練習

1、顯示/proc/meminfo檔案中大小寫s開頭的行

grep -i "^s" /proc/meminfo

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

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

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

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

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

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

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

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

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

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

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

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

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

8、新增使用者bash、testbash、basher以及nologin(其shell為/sbin/nologin):而後找出/etc/passwd檔案中使用者名稱同shell名的行

useradd bash

useradd testbash

useradd basher

useradd -s /sbin/nologin nologin

grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd

grep與正規表示式

grep命令 功能 輸入檔案的每一行中查詢字串。基本用法 grep acinv color auto a n b n 搜尋字串 檔名 引數說明 a 將二進位制文件以文字方式處理 c 顯示匹配次數 i 忽略大小寫差異 n 在行首顯示行號 a after的意思,顯示匹配字串後n行的資料 b before...

grep與正規表示式

正規表示式只是字串的一種描述,只有和支援正規表示式的工具相結合才能進行字串處理。本文以grep為例來講解正規表示式。grep命令 功能 輸入檔案的每一行中查詢字串。基本用法 grep acinv color auto a n b n 搜尋字串 檔名 引數說明 a 將二進位制文件以文字方式處理 c 顯...

grep與正規表示式

grep 及正規表示式 文字查詢的需要,grep,egrep,fgrep grep 根據模式,去搜尋文字,並將符合模式的文字行顯示到螢幕 pattern 文字字元和正規表示式的元字元組合而成的匹配條件 grep options pattern file.grep color root etc pas...