标签:alias text color relative 运行 ref span ssh nbsp
8 grep
正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
8.1 语法格式
格式一:
grep [选项] ‘正则表达式’ 文件列表
|
单引号
[root@www ~]# grep [-acinv] [--color=auto] ‘搜寻字符串‘ filename
格式二:
命令 | grep [选项] ‘正则表达式’
8.2 grep命令处理数据方式
以行为处理单位,对数据进行逐行处理(文件列表中有多个文件时,处理完一个文件中的所有行后再处理处理其它文件)
默认把文件中与正则表达式匹配数据所在的行打印(输出),不影响原文件内容。
8.3 grep选项
-v 反向选择,亦即显示出没有 ‘搜寻字符串‘ 内容的那一行!
--color可以将找到的关键词部分加上颜色的显示喔!
在关键字的显示方面,grep 可以使用 --color=auto 来将关键字部分使用颜色显示。 这可是个很不错的功能啊!但是如果每次使用 grep 都得要自行加上 --color=auto 又显的很麻烦~ 此时那个好用的 alias 就得来处理一下啦!你可以在 ~/.bashrc 内加上这行:『alias grep=‘grep --color=auto‘』再以『 source ~/.bashrc 』来立即生效即可喔! 这样每次运行 grep 他都会自动帮你加上颜色显示啦
-i 忽略字母大小写
-c计算找到 ‘搜寻字符串‘ 的次数
-n 输出与正则表达式匹配数据在文中的行号
-q 不输出与正则表达式匹配的行 #可以与echo $?结合在一块使用
-E使用支持扩展正则表达式,
主要好处是增加了额外的正则表达式元字符集。
对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。
northwest NW Charles Main 3.0.98 3 34
eastern EA TB Savage 4.4 .845 20
8.4 grep与正则表达式
元字符
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
元字符是一个或一组代替一个或多个字符的字符。听起来有点拗口,但举一个例子也许你就明白了:元字符*用来匹配0个或多个的前一字符;而元字符 . 用来匹配一个任意的一个字符。
8.4.1
^ 匹配行首
^a 匹配以字母a开头的行
^ab
8.4.2
匹配以字母a结尾的行
.匹配任意字符结尾的行
.表示任意匹配字符,如果想要匹配.本身需要加转义符.
8.4.3
^ 匹配空行
grep ‘^plj$’ /etc/passwd
grep ‘plj’ /etc/passwd
注意上面2个例子的区别
8.4.4
. 匹配任意单个字符
grep ‘.’ /etc/passwd
8.4.5 匹配次数
grep –color ‘g(ooo)*d’ a.txt
8.4.7
|
grep –v –color ‘^#|^’ a.txt
grep -E –v –color ‘^#|^’ a.txt
按鸟哥或老男孩思路整理:正则和扩展正则,什么时候用-E
8.4.8 范围内匹配
[] 匹配范围内任意字符
如t[ae]st
grep –color ‘[abc]’ a.txt
grep -E –color ‘a|b|c’ a.txt
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[a-Z] 匹配所有字母
[0-9] 匹配0-9所有数字
[a-Z0-9] 匹配所有字母和数字
8.4.8 范围内取反
(注意取反和开头都用的是^,但是用的位置不同,表示的意义也不同)
[^a-Z] 不匹配有字母的行
注意:因-在范围匹配中有特别的意义,所以如果想要匹配-,必须写在开头或结尾,不能写在中间
如:grep –color ‘[?#-]’ a.txt
grep –color ‘[?-#]’ a.txt (x) #写法正确,但不能满足需求。
grep –color ‘^[^a-z]’ a.txt
grep –color ‘^[^a-Z0-9]’ a.txt
注意2个^所表示意义的不同
8.4.9 匹配单词
\<匹配单词开头(出现在左侧)
head -6 /etc/init.d/sshd | grep –i –color ‘\<s’
head -6 /etc/init.d/sshd | grep –i –color ‘\<st’
\>匹配单词结尾(出现在右侧)
head -6 /etc/init.d/sshd | grep –i –color ‘l >’
综合例子:
需求:匹配MAC地址
00:0C:29:89:E0:C5
ifconfig | grep -E ‘(([a-z0-9]{2}):){5}[a-z0-9]{2}‘
若不加-E参数,()、{}等需要转义
标签:alias text color relative 运行 ref span ssh nbsp
原文地址:https://www.cnblogs.com/whatislinux/p/3d7b17732a5663c83351b822bd1ae880.html