grep正規表示式詳解
grep:(global search regular expression(RE)and print out the line)
文字搜尋工具,根據使用者指定的文字模式對目標檔案進行逐行搜尋,並顯示匹配的行
格式:grep [options] 'PATTERF' file,預設只支援基本正規表示式,要匹配額外功能的字元用-E
選項:
--color 指定顏色
-v:反向匹配,顯示不能被模式匹配到的行
-o:僅匹配被模式匹配到的字串,而非整行
-i:不區分大小寫,ignore-case
-E:支援擴充套件
-A #:還顯示模式下面的一行
-B #:還顯示模式上面的一行
-C #:前後各顯示一行
正規表示式:是一類字元所書寫出的模式(pattern)
元字元:類似統配符,不表示字元本身的意義,用於額外功能性的描述
基本正規表示式和擴充套件正規表示式
基本正規表示式的元字元:
.:任意單個字元
[]:指定範圍內的任意單個字元
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
所有的字母:[[:alpha:]]
字母+數字:[[:alnum:]]
空格:[[:space:]]
標點符號:[[:putct:]]
[^]: 指定範圍外的任意單個字元
次數匹配:用來指定匹配其前面的字元的次數
*:任意次
例子:x*y xxy xy y 都能匹配
.*:匹配任意長度的任意字元
\?:前面字元出現0次或者1次的
\{m\}:匹配m次
\{m,n\}:至少m次,至多n次
\{m,\}:至少m次
\{0,n}:至多n次
做變數換算需要使用”“
貪婪模式:儘可能的長的去匹配字元:
位置錨定:用於指定字元出現的位置
^:錨定行首
^Char
$:錨定行尾
grepchar$
^$:空白行
單詞的位置錨定
\<char :錨定詞首,\b
char\> : 錨定詞尾,char\b
分組:
\(\)
\(ab\)*xy
引用:
\1:後向引用,引用前面的第一個左括號以及與之對應的右括號中的模式匹配到的內容,意思是說前面出現一次,在\1這也要出現一次
練習:
1、顯示/proc/meminfo檔案中的以大小寫s的開頭的行
grep -i "^s" /proc/meminfo
2、取出預設shell為非bash的使用者
grep -v "bash$" /etc/passwd |cut -d: -f1
3、取出預設shell為bash的且其ID號最大的使用者
grep "bash$" /etc/passwd |cut -d: -f1|sort -n -t: -k3|tail -1
4、顯示/etc/rc.d/rc.sysinit檔案中,以#開頭,後面跟至少一個空白字元,而後又有至少一個非空白字元的行
grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
5、顯示/boot/grub/grub.conf中以至少一個空白字元的行
grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf
6、查出/etc/passwd中一位數或兩位數
grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
7、找出ifconfig命令結果中的1到255之間的整數
ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
8、檢視當前系統上root使用者的所有資訊
grep “\<root\>”/etc/passwd
9、新增使用者bash和testbash,而後找出當前系統上於其他使用者名稱和預設shell相同的使用者
grep “^\([[:alnum:]]\{1,\}\)\>.*\1$” /etc/passwd
10、找出netstat -tan命令執行的結果中以“LISTEN”或“ESTABLISHEN”結尾的行
metstat -tan |grep -E “(LISETN|ESTABLISHED)[[:space:]]*"
11、取出當前系統上所有使用者的shell,要求:每種shell中顯示一次,且升序排序顯示
cut -d: -f7 /etc/passwd|sort -u
挑戰題:
grep egrep fgrep
egrep:使用擴充套件正規表示式來構建模式,相當於 grep -E
元字元:
字元匹配:
.:任意單個字元
[]:指定範圍內的任意單個字元
[^]:指定範圍外的任意單個字元
次數匹配
*:匹配器前面的字元任意次
?:匹配器前面的字元0或1次
+:匹配其前面字元至少一次
{m}:匹配其前面字元m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:只讀n次
分組:
():分組
|:或者,ac|bc ac或者bc
文字搜尋工具,根據使用者指定的文字模式對目標檔案進行逐行搜尋,並顯示匹配的行
格式:grep [options] 'PATTERF' file,預設只支援基本正規表示式,要匹配額外功能的字元用-E
選項:
--color 指定顏色
-v:反向匹配,顯示不能被模式匹配到的行
-o:僅匹配被模式匹配到的字串,而非整行
-i:不區分大小寫,ignore-case
-E:支援擴充套件
-A #:還顯示模式下面的一行
-B #:還顯示模式上面的一行
-C #:前後各顯示一行
正規表示式:是一類字元所書寫出的模式(pattern)
元字元:類似統配符,不表示字元本身的意義,用於額外功能性的描述
基本正規表示式和擴充套件正規表示式
基本正規表示式的元字元:
.:任意單個字元
[]:指定範圍內的任意單個字元
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
所有的字母:[[:alpha:]]
字母+數字:[[:alnum:]]
空格:[[:space:]]
標點符號:[[:putct:]]
[^]: 指定範圍外的任意單個字元
次數匹配:用來指定匹配其前面的字元的次數
*:任意次
例子:x*y xxy xy y 都能匹配
.*:匹配任意長度的任意字元
\?:前面字元出現0次或者1次的
\{m\}:匹配m次
\{m,n\}:至少m次,至多n次
\{m,\}:至少m次
\{0,n}:至多n次
做變數換算需要使用”“
貪婪模式:儘可能的長的去匹配字元:
位置錨定:用於指定字元出現的位置
^:錨定行首
^Char
$:錨定行尾
grepchar$
^$:空白行
單詞的位置錨定
\<char :錨定詞首,\b
char\> : 錨定詞尾,char\b
分組:
\(\)
\(ab\)*xy
引用:
\1:後向引用,引用前面的第一個左括號以及與之對應的右括號中的模式匹配到的內容,意思是說前面出現一次,在\1這也要出現一次
練習:
1、顯示/proc/meminfo檔案中的以大小寫s的開頭的行
grep -i "^s" /proc/meminfo
2、取出預設shell為非bash的使用者
grep -v "bash$" /etc/passwd |cut -d: -f1
3、取出預設shell為bash的且其ID號最大的使用者
grep "bash$" /etc/passwd |cut -d: -f1|sort -n -t: -k3|tail -1
4、顯示/etc/rc.d/rc.sysinit檔案中,以#開頭,後面跟至少一個空白字元,而後又有至少一個非空白字元的行
grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
5、顯示/boot/grub/grub.conf中以至少一個空白字元的行
grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf
6、查出/etc/passwd中一位數或兩位數
grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
7、找出ifconfig命令結果中的1到255之間的整數
ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
8、檢視當前系統上root使用者的所有資訊
grep “\<root\>”/etc/passwd
9、新增使用者bash和testbash,而後找出當前系統上於其他使用者名稱和預設shell相同的使用者
grep “^\([[:alnum:]]\{1,\}\)\>.*\1$” /etc/passwd
10、找出netstat -tan命令執行的結果中以“LISTEN”或“ESTABLISHEN”結尾的行
metstat -tan |grep -E “(LISETN|ESTABLISHED)[[:space:]]*"
11、取出當前系統上所有使用者的shell,要求:每種shell中顯示一次,且升序排序顯示
cut -d: -f7 /etc/passwd|sort -u
挑戰題:
grep egrep fgrep
egrep:使用擴充套件正規表示式來構建模式,相當於 grep -E
元字元:
字元匹配:
.:任意單個字元
[]:指定範圍內的任意單個字元
[^]:指定範圍外的任意單個字元
次數匹配
*:匹配器前面的字元任意次
?:匹配器前面的字元0或1次
+:匹配其前面字元至少一次
{m}:匹配其前面字元m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:只讀n次
分組:
():分組
|:或者,ac|bc ac或者bc
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29620572/viewspace-1788064/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux grep 命令中的正規表示式詳解Linux
- linux grep 正規表示式Linux
- 詳解正規表示式
- 正規表示式詳解
- grep 命令系列:grep 中的正規表示式
- 正規表示式?:用法詳解
- Java 正規表示式詳解Java
- 快速掌握grep命令及正規表示式
- Linux grep命令和正規表示式Linux
- 正規表示式分組詳解
- 詳解 Python 正規表示式Python
- MySQL-正規表示式詳解MySql
- Python正規表示式詳解Python
- Linux正規表示式詳解Linux
- JS之正規表示式詳解JS
- Javascript正規表示式詳解(一)JavaScript
- JS正規表示式使用詳解JS
- 正規表示式使用詳解(轉)
- Linux之grep中的正規表示式Linux
- shell程式設計(四)| grep正規表示式程式設計
- 正規表示式詳解及實戰
- Python 正規表示式模組詳解Python
- js正規表示式常用函式詳解(續)JS函式
- Python正規表示式 findall函式詳解Python函式
- Python正規表示式常用函式詳解Python函式
- 正規表示式教程之位置匹配詳解
- 正規表示式分組例項詳解
- JS基礎篇–正規表示式詳解JS
- Sed 命令詳解 正規表示式元字元字元
- Oracle中的正規表示式(及函式)詳解Oracle函式
- ORACLE正規表示式函式詳解--轉載整理Oracle函式
- Python3之正規表示式詳解Python
- PHP正規表示式模式修飾符詳解PHP模式
- 正規表示式regular expression詳述Express
- 正規表示式教程之匹配單個字元詳解字元
- 正規表示式教程之匹配一組字元詳解字元
- 正規表示式
- 例項程式碼詳解正規表示式匹配換行