您的位置:首页 > 运维架构 > Shell

shell正则

2016-04-19 16:34 363 查看
正则表达式
正则表达式 由 元字符 、普通字符 、元字符 和普通字符 组成
语法格式
grep [选项] '正则表达式' 文件列表
命令 | grep [选项] '正则表达式'
-------------------------------------------------------
ps aux | grep sshd
grep root /etc/passwd
选项?
--color 标红显示匹配字串
-q 静默,无任何输出,一般用于检测
-c 统计匹配的行数
-n 显示出匹配结果所在的行号
-v 条件取反
-i 忽略字母大小写
-E 使匹配条件转义(或者用egrep)
元字符 有哪些?
^ 匹配行首
$ 匹配行尾
. 任意单个字符(不包括换号符号 \n)
----------------------------------------------------------------------
定义前边的正则表达式出现的次数
\+ 前边的正则表达式出现1次到多次
\? 前边的正则表达式出现0次到1次
* 前边的正则表达式出现0次到多次
----------------------------------------------------------------------
\(\) 把正则表达式做为整体匹配
----------------------------------------------------------------------
\{\} 限定前边正则表达式出现的次数
{N}前边正则表达式必须出现N次
{N,}前边正则表达式至少出现N次
{N,M}前边正则表达式至少出现N次 最多出现M次
----------------------------------------------------------------------
[ ] 范围内匹配,范围内任意一个字符 (次数是一次)
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[a-Z]
[a-zA-Z] 匹配所有大小写字母
[279]
[0-9] 匹配所有数字
[a-Z0-9] 匹配所有大小写字母和数字

^[ ] 以范围内的开头
^[a-z]
^[0-9]
^[169]
^[afw]
[ ]$ 以范围内的结束
^[a-c][0-9]$
[^ ] 范围内取反
^[^a-Z0-9] 匹配以符号开头的行
------------------------------------------------------------
\| 或
grep --color '^root\|^daemon' /etc/passwd 列出以root或者以daemon开头的行
grep --color '^[rd]' /etc/passwd 列出以r或者以d开头的行
----------------------------------------------------------------------
\< 单词的开头
\> 单词的结束
head -5 /etc/httpd/conf/httpd.conf | grep --color '\<c' 列出以带c开头的单词的行
head -5 /etc/httpd/conf/httpd.conf | grep --color 's\>' 列出以带s结尾的单词的行

\b 单词边界
grep --color '\btom' d.txt 单词左边包含tom的行
grep --color 'tom\b' d.txt 单词右边包含tom的行
grep --color '\btom\b' d.txt 单词只包含tom的行 边界无其他字符
---------------------------------------------------------------------
XX:XX:XX:XX:XX:XX

grep -E --color '([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}' mac.txt

0 1 2 3 4 5 6 7 8 9 a b c d e f A B C DEF

grep --color '\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}' mac.txt
---------------------------------------------------------------------
ip的正则表达式(括号的大小写很严格,点需要转义)
grep -E '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: