linux中grep和egrep以及元字符的使用
2014-02-20 14:09
218 查看
Pattern(模式):文本字符和正则表达式的元字符组合而成匹配条件.
Regular Expression(正则表达式):是一类字符书写出来的模式(Patern).
Metacharacter(元字符):不表示字符本身的意义,在正则表达式中用于额外功能的描述。
1.grep,egrep,fgrep的简介: grep:( global search regular expression (RE)) and print out the line。grep是一款功能强大的文本搜索工具,根据用户指定的文本模式对目标文件(输入文件:input files或标准输入设备:standard input)进行逐行搜索,显示能够被模式匹配的行。
egrep:egrep的命令只和grep有很小不同,使用扩展的正则表达式构建模式,egrep是grep的扩展相当于grep -e,可以支持更多的RE元字符。
fgrep:fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符 表示回其字符本身的意义,不再特殊功能。
2.grep的工作方式:grep在一个或多个文件中搜索用户指定的模式。如果模式包括空格,则必须被引用,模式后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。3.grep的使用格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
4.grep的常用选项: 不带任何选项:在目标文件中查找并显示与模式匹配的行。 例: 在/etc/passwd中查找并显示用户名为“root”用户的信息
-n:列出模式中匹配的行以及行号
例:查找并显示在/etc/group中"mandrivia"所在的行和行号
-v:反向匹配显示不能被模式匹配的行
例: 在/etc/passwd中查找并显示除了“root”之外的所有用户的信息 (结果中的一部分)
-o:仅匹配行当中被模式匹配到的字串,而不是整行
例: 在/etc/group中查找"mandrivia",并显示
-i:在搜索的目标文件中不去分大小写字母进行模式匹配 例: 在/var/log/boot.log-20140216查找字母"o"和"O"所在的行
-E:支持扩展的正则表达式
例: 在/etc/rc.d/init.d/network中查找并显示"t"至少出现2次所匹配的行
-A #:支持匹配到的字符串所匹配的行以及下#行(#:表示数字) 例: 在/etc/fstab中查找并显示"/dev/shm "所匹配的行以及下2行
-B #:支持匹配到的字符串所在的行以及上#行(#:表示数字) 例: 在/etc/host.conf 中查找并显示"order "所匹配的行以及上1行
-C #:支持匹配到的字符串所在的行以及上下#行(#:表示数字) 例:在/proc/meminfo查找"MemFree"所在的行以及上一行和下一行
5.正则表达式和扩展正则表达式元字符以及元字符使用: 5.1:标准RE的元字符级grep的使用 5.1.1字符匹配 [[:punct:]]:标点符号
[[:lower:]]:小写字母
[[:upper:]]:大写字母
[[:digit:]]:数字
[[:alnum:]]:数字和大小写字母
[[:alpha:]]:所有大小写字母 [[:space:]]:所有空格字符 5.1.1.1 例:显示"Aa12@"中的字母不区分大小写
显示"A a12@"中的空白字符
.:任意单个字符
5.1.1.2 例:
[]:指定范围内的任单个字符
5.1.1.3 例:
[^]:指定范围外的任意单个字符
5.1.1.4 例:
5.1.2:次数匹配:用来指定匹配其前面的字符的次数
*:匹配其前的字符任意次
5.1.2.1例:
\?:匹配其前的字符0次或1次
5.1.2.2例:
贪婪模式:尽可能多的匹配所搜索的字符串
.*:匹配任意长度的任意字符
5.1.2.3例:
\{m\}:匹配其前的字符m次
\{m,n\}:匹配其前的字符m次到n次
\{m\, }:匹配其前的字符至少m次
\{ ,n\}:匹配其前的字符至多n次
5.1.2.4例:"o"出现2次
5.1.2.5例:"o"至少出现3次
5.1.3:位置锚定
^:用于锚定行首的字符
5.1.3.1例:查找并显示以"z"开头的用户的所有信息
$:用于锚定行尾的字符
5.1.3.2例:显示以"n"为行尾的所有用户组的信息
$^:锚定空白行
5.1.3.3例:
\<词(\b词):锚定词首
5.1.3.4例:显示用户名为zhou的所有信息:
\>词(词\b):锚定词尾
5.1.3.5例:显示shell为/bin/bash的所有用户
5.4.分组元字符
\(\):括号限定多选结构的范围,标注量词作用的元素,为反向引用”捕获”文本
\1,\2,…:反向引用 匹配之前的第一、第二组括号内的字表达式匹配的文本
使用括号的3个理由:限制多选结构、分组、捕获文本
5.4.1例:显示当前正确的IP且范围为:1.0.0.1--223.255.255.254
5.4.2例:
5.2扩展RE元字符及egrep的使用
5.2.1字符匹配
用法同标准的正则表达式元字符使用相同
例:在/var/log/boot.log-20140216查找字母"o"和"O"所在的行
5.2.2次数匹配
*:匹配其前的字符任意次
?:匹配其前的字符0次或1次
+:匹配其前的字符至少1次
.*:匹配任意长度的任意字符
{m}:匹配其前的字符m次
{m,n}:匹配其前的字符m次到n次
{m, }:匹配其前的字符至少m次
{ ,n}:匹配其前的字符至多n次
例:查找以r开头后面至少有一个o的用户所在的行
5.2.3位置锚定
^:锚定行首
$:锚定行尾
\<词(\b词):锚定词首
\>词(词\b):锚定词尾
5.2.4分组
():括号限定多选结构的范围,标注量词作用的元素,为反向引用”捕获”文本
|:逻辑或操作符
例:显示当前正确的IP且范围为:1.0.0.1 - 223.255.255.254
Regular Expression(正则表达式):是一类字符书写出来的模式(Patern).
Metacharacter(元字符):不表示字符本身的意义,在正则表达式中用于额外功能的描述。
1.grep,egrep,fgrep的简介: grep:( global search regular expression (RE)) and print out the line。grep是一款功能强大的文本搜索工具,根据用户指定的文本模式对目标文件(输入文件:input files或标准输入设备:standard input)进行逐行搜索,显示能够被模式匹配的行。
egrep:egrep的命令只和grep有很小不同,使用扩展的正则表达式构建模式,egrep是grep的扩展相当于grep -e,可以支持更多的RE元字符。
fgrep:fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符 表示回其字符本身的意义,不再特殊功能。
2.grep的工作方式:grep在一个或多个文件中搜索用户指定的模式。如果模式包括空格,则必须被引用,模式后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。3.grep的使用格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
4.grep的常用选项: 不带任何选项:在目标文件中查找并显示与模式匹配的行。 例: 在/etc/passwd中查找并显示用户名为“root”用户的信息
-n:列出模式中匹配的行以及行号
例:查找并显示在/etc/group中"mandrivia"所在的行和行号
-v:反向匹配显示不能被模式匹配的行
例: 在/etc/passwd中查找并显示除了“root”之外的所有用户的信息 (结果中的一部分)
-o:仅匹配行当中被模式匹配到的字串,而不是整行
例: 在/etc/group中查找"mandrivia",并显示
-i:在搜索的目标文件中不去分大小写字母进行模式匹配 例: 在/var/log/boot.log-20140216查找字母"o"和"O"所在的行
-E:支持扩展的正则表达式
例: 在/etc/rc.d/init.d/network中查找并显示"t"至少出现2次所匹配的行
-A #:支持匹配到的字符串所匹配的行以及下#行(#:表示数字) 例: 在/etc/fstab中查找并显示"/dev/shm "所匹配的行以及下2行
-B #:支持匹配到的字符串所在的行以及上#行(#:表示数字) 例: 在/etc/host.conf 中查找并显示"order "所匹配的行以及上1行
-C #:支持匹配到的字符串所在的行以及上下#行(#:表示数字) 例:在/proc/meminfo查找"MemFree"所在的行以及上一行和下一行
5.正则表达式和扩展正则表达式元字符以及元字符使用: 5.1:标准RE的元字符级grep的使用 5.1.1字符匹配 [[:punct:]]:标点符号
[[:lower:]]:小写字母
[[:upper:]]:大写字母
[[:digit:]]:数字
[[:alnum:]]:数字和大小写字母
[[:alpha:]]:所有大小写字母 [[:space:]]:所有空格字符 5.1.1.1 例:显示"Aa12@"中的字母不区分大小写
显示"A a12@"中的空白字符
.:任意单个字符
5.1.1.2 例:
[]:指定范围内的任单个字符
5.1.1.3 例:
[^]:指定范围外的任意单个字符
5.1.1.4 例:
5.1.2:次数匹配:用来指定匹配其前面的字符的次数
*:匹配其前的字符任意次
5.1.2.1例:
\?:匹配其前的字符0次或1次
5.1.2.2例:
贪婪模式:尽可能多的匹配所搜索的字符串
.*:匹配任意长度的任意字符
5.1.2.3例:
\{m\}:匹配其前的字符m次
\{m,n\}:匹配其前的字符m次到n次
\{m\, }:匹配其前的字符至少m次
\{ ,n\}:匹配其前的字符至多n次
5.1.2.4例:"o"出现2次
5.1.2.5例:"o"至少出现3次
5.1.3:位置锚定
^:用于锚定行首的字符
5.1.3.1例:查找并显示以"z"开头的用户的所有信息
$:用于锚定行尾的字符
5.1.3.2例:显示以"n"为行尾的所有用户组的信息
$^:锚定空白行
5.1.3.3例:
\<词(\b词):锚定词首
5.1.3.4例:显示用户名为zhou的所有信息:
\>词(词\b):锚定词尾
5.1.3.5例:显示shell为/bin/bash的所有用户
5.4.分组元字符
\(\):括号限定多选结构的范围,标注量词作用的元素,为反向引用”捕获”文本
\1,\2,…:反向引用 匹配之前的第一、第二组括号内的字表达式匹配的文本
使用括号的3个理由:限制多选结构、分组、捕获文本
5.4.1例:显示当前正确的IP且范围为:1.0.0.1--223.255.255.254
5.4.2例:
5.2扩展RE元字符及egrep的使用
5.2.1字符匹配
用法同标准的正则表达式元字符使用相同
例:在/var/log/boot.log-20140216查找字母"o"和"O"所在的行
5.2.2次数匹配
*:匹配其前的字符任意次
?:匹配其前的字符0次或1次
+:匹配其前的字符至少1次
.*:匹配任意长度的任意字符
{m}:匹配其前的字符m次
{m,n}:匹配其前的字符m次到n次
{m, }:匹配其前的字符至少m次
{ ,n}:匹配其前的字符至多n次
例:查找以r开头后面至少有一个o的用户所在的行
5.2.3位置锚定
^:锚定行首
$:锚定行尾
\<词(\b词):锚定词首
\>词(词\b):锚定词尾
5.2.4分组
():括号限定多选结构的范围,标注量词作用的元素,为反向引用”捕获”文本
|:逻辑或操作符
例:显示当前正确的IP且范围为:1.0.0.1 - 223.255.255.254
相关文章推荐
- grep、egrep以及正则表达式的使用
- linux grep使用以及grep使用练习
- Linux中grep的使用以及grep的练习
- linux笔记之grep、egrep使用(二)
- grep,egrep使用以及正则表达式的使用
- linux下grep、egrep及正则表示式的常用使用方法
- Windows下使用grep命令(以及其它部分Linux命令)
- Linux中文本处理工具grep和egrep的详细使用
- grep、egrep以及正则表达式的使用
- Windows下使用grep命令(以及其它部分Linux命令)
- 在Linux中使用grep和egrep结合正则表达式查找字符
- linux基本命令grep egrep fgrep用法以及正则表达式
- Linux正则表达式的使用和基本命令grep、egrep、fgrep的用法
- linux笔记之grep、egrep使用(一)
- Windows下使用grep命令(以及其它部分Linux命令)
- linux基本命令grep egrep fgrep用法以及正则表达式
- Linux grep、egrep 命令使用示例及详解
- Linux egrep grep命令的使用
- grep、egrep以及正则表达式的使用
- Linux中grep、egrep正则表达式的使用