欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell正則表達式新手入門教程

 更新時間:2024年11月01日 08:27:09   作者:帶帶琪寶  
在Shell腳本編程中,正則表達式是處理文本字符串不可或缺的工具,通過特殊字符如"^"、"$"、"."、"*"和"[]"等,可以實現(xiàn)從匹配行首尾、任意字符到指定范圍內(nèi)字符的復雜文本處理,需要的朋友可以參考下

前言

shell中總是會需要對文本字符串做各種各樣的剪切拼接等操作,除了 basename 和 dirname 這種簡單的函數(shù)外,還可以用正則表達式,定義模糊匹配的篩選規(guī)則

一、常規(guī)匹配

管道操作就是一種匹配方式,如用來查找用戶:

[root@hadoop-master ~]# cat /etc/passwd | grep zxd
zxd:x:1001:1001::/home/zxd:/bin/bash

二、特殊字符

正則的強大就是因為可以使用各種各樣的特殊字符 

^

匹配一行的開頭,如 ^ab 表示以 ab 開頭的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep ^h
halt:x:7:0:halt:/sbin:/sbin/halt
hue:x:1000:1000::/home/hue:/bin/bash

$

匹配一行的結(jié)束,如 zxd$ 表示以 zxd 結(jié)尾的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep t$
halt:x:7:0:halt:/sbin:/sbin/halt

一起使用 ^abc$,會匹配 abc,使用^$會匹配空行,加上-n參數(shù)會顯示行號

[root@hadoop-master daily_archive_func]# cat daily_archive_func.sh | grep -n ^$
2:
9:
18:
22:
25:
29:
33:
41:
43:
44:
45:
46:

.

匹配一個任意的字符,如a..b會顯示包含a某某b的所有行

[root@hadoop-master etc]# cat passwd | grep -n r..t
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

*

不單獨使用,與上一個字符連用,表示匹配上一個字符連續(xù)出現(xiàn)0次,1次或多次,如ro*t會匹配rt、rot、root、rooot。。。等所在的所有行

.*:任意字符出現(xiàn)任意次,空字符串也能匹配到

[root@hadoop-master etc]# cat passwd | grep -n ^z.*bash$
23:zxd:x:1001:1001::/home/zxd:/bin/bash

字符區(qū)間

[ ] 表示匹配某個范圍內(nèi)的一個字符

[6,8]------匹配 6 或者 8

[0-9]------匹配一個 0-9 的數(shù)字

[0-9]*------匹配任意長度的數(shù)字字符串

[a-z]------匹配一個 a-z 之間的字符

[a-z]* ------匹配任意長度的字母字符串

[a-c, e-f]-匹配 a-c 或者 e-f 之間的任意字符

 \

\表示轉(zhuǎn)義,并不會單獨使用。由于所有特殊字符都有其特定匹配模式,而我們剛好想匹配特殊字符本身時,就會碰到困難。

此時我們就要 將轉(zhuǎn)義字符和特殊字符連用,再加上單引號引起來,來表示特殊字符本身,例如一個對于腳本,找出所有包含 '$' 的行

三、示例

正則匹配手機號

注意點:shell中的 -E 表示支持擴展的正則表達式,本身是不支持部分規(guī)則的,如{}

總結(jié)

到此這篇關(guān)于shell正則表達式新手入門的文章就介紹到這了,更多相關(guān)shell正則表達式入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論