正則和通配區別 ,檔案處理三劍客之 grep

2021-10-12 16:21:01 字數 3603 閱讀 4123

2.正則

二、grep

由shell解析的,bash特性之一,在linux系統中,遇到這類字元只會自動匹配檔名

特點

a、 常見的萬用字元

萬用字元含義

*任意長度任意字元

?任意單個字元

匹配範圍

[^]取反

b、通配練習題a.特點

b.分類

c.基本正規表示式

分類表示式

含義字元匹配

.匹配任意單個字元

匹配指定範圍內的任意單個字元

[^]取反

匹配次數

*匹配其前面的字元任意次:0,1,多次

.*匹配任意長度的任意字元

?匹配其前面的字元0次或1次;即其前面的字元是可有可無的

+匹配其前面的字元1次或多次;即其面的字元要出現至少1次

匹配其前面的字元m次

匹配其前面的字元至少m次,至多n次

至多n次

至少m次

位置錨定

^行首錨定;用於模式的最左側

$行尾錨定;用於模式的最右側

^pattern$

用於pattern來匹配整行

^$空白行

^[[:space:]]*$

空行或包含空白字元的行

< 或 \b

詞首錨定,用於單詞模式的左側

> 或 \b

詞尾錨定,用於單詞模式的右側

匹配完整單詞

分組及引用

\(\)

將乙個或多個字元**在一起,當作乙個整體進行處理

\(\)ab\1

模式從左側起,第乙個左括號以及與之匹配的右括號之間的模式所匹配到的字元

(\)ab\2

模式從左側起,第二個左括號以及與之匹配的右括號之間的模式

d.高階正規表示式

分類表示式

含義字元匹配

.任意單個字元

指定範圍內的任意單個字元

[^]指定範圍內的任意單個字元

匹配次數

*任意次:0,1或多次

?0次或者1次

+其前字元至少出現1次

其前的字元出現m次

至少m次,至多n次

0到m次數

至少m次

位置錨定

^行首錨定

$行尾錨定

詞首錨定

>,\b

詞尾錨定

分組及引用

()()…\1引用a

be.注意

f.正則練習題

匹配郵箱格式

mail=******[email protected][[

$mail

=~ [a-z0-9_]+@[a-z0-9]+\.[a-z]+ ]]&&

echo 1 ||

echo 2

匹配單詞[[

$a=~ (

[a-za-z]*)]]

&&echo 1 ||

echo 2

匹配ip位址

比如192.168.12.12

\<

[1-9]

|[1-9]

[0-9]

|1[0-9]

[0-9]

|2[0,1]

[0-9]

|22[0-3]\>

###包括1-9,或者10-99 或者100-254(代表192)

(\.|[1-9]

[0-9]

|1[0-9]

|2[0-4]

[0-9]

|25[0-4]\>

)### 包括0-9 或者10-99或者100-254 以及引用兩次(代表168.12)

\.\<

[0-9]

|[1-9]

[0-9]

|1[0-9]

|2[0-4]

[0-9]

|25[0-4]\>

##包括0-9 或者10-99或者100-254(代表.12)

全面搜尋正規表示式並把行列印出來是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來

grep [options] pattern [file…]

options

釋義–color=auto

對匹配到的文字著色後高亮顯示;

-iignorecase,忽略字元的大小寫;

-o僅顯示匹配到的字串本身;

-v( --invert-match)

顯示不能被模式匹配到的行;

-e支援使用擴充套件的正規表示式元字元;

-q( --quiet, --silent)

靜默模式,即不輸出任何資訊;

-a #

after, 後#行

-b #

before,前#行

-c #

context,前後各#行

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

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

- 找出/etc/passwd檔案中的兩位數或三位數

grep

"\" /etc/passwd

- 找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg檔案中,以至少乙個空白字元開頭,且後面非空白字

符的行grep

"^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg

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

netstat -tan |

grep -e "listin[0,1]|[[:space:]]\+ $"

netstat -tan |

grep

"listin[[:space:]]*$"

- 找出/proc/meminfo檔案中,所有以大寫或小寫s開頭的行;至少有三種實現方式;

grep

"^[ss]" /proc/meninfo

grep -i "^s" /proc/meminfo

grep -e "^(s|s)" /proc/meninfo

- 顯示當前系統上root、centos或user1使用者的相關資訊

grep -e "^(root|centos|user1)\>" /etc/passwd

- 找出/etc/rc.d/init.d/functions檔案中某單詞後面跟乙個小括號的行

grep -e -o "[_[:alnum:]]+\(\)"/etc/rc.d/init.d/functions

- 使用echo命令輸出一絕對路徑,使用egrep取出基名

echo /etc/sysconfig/ |

grep -e -o "[^/]+/?$"

- 找出ifconfig命令結果中的1-255之間的數值

ifconfig

|grep -e -o "\"

檔案處理三劍客之grep

grep global search regular expression and print out the line 作用 文字搜尋工具,根據使用者指定的 模式 對目標文字逐行進行匹配檢查 列印匹配到的行 模式 由正規表示式字元及文字字元所編寫的過濾條件 格式grep options patte...

Linux檔案處理三劍客

grep 關鍵字 擷取 文字蒐集工具,結合正規表示式非常強大 重點 awk 關鍵字 分析 處理 一行一行的分析處理 awk 條件型別1條件型別2 filename,awk 也可以讀取來自前乙個指令的標準輸出 其中awk非常重要 grep 基本語法 grep 要匹配的內容 檔名 主要引數 c 只輸出匹...

linux正則和三劍客

linux初學總結 三個重要工具 grep awk sed awk 可以定位到資料的所在行數,並處理其中的分段 sed 可以對定位到的資料行進行增刪改查操作。管道 命令常和上面三個命令一起使用 命令1 命令2 命令3 命令1的輸出作為命令2的輸入經過命令2處理輸出的結果作為命令3的輸入 b 匹配單詞...