Welcome 微信登录

首页 / 操作系统 / Linux / 正则表达式(grep)元字符及模式匹配的介绍及sed高级应用选项

当要查看文本中特定字符的时候,我们会经常用到GREP、SED、AWK,今天我们一起来学习下Linux中的文本过滤工具GREP和SED的基本使用:正则表达式:
定义:
是一些字符或是特殊字符串模式的集合。
功能:根据模式搜索文本,并将符合模式的文本行显示出来。
Pattern(模式):
文本字符和正则表达式的元字符组合而成匹配条件
grep:
grep简介
grep(global search regular RE) < /span>and print out the line,全面搜索正则表达式并把行打印出来
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。
egrep是grep的扩展,支持更多的RE元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符
表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。grep是很常见也很常用的命令,它最重要的功能就是进行字符串数据的比较,然后将符合用户要求的字符串显示出来。
在这里需要说明的是,grep在数据中查找一个字符串时,是以”整行“为单位来进行数据选取的。也就是说,假如一个文件内有10行,其中有两行具有
所搜索的字符串,则将那两行显示在屏幕上,其它则丢去。
注:默认情况下正则表达式工作在贪婪模式下
grep [options] PATTERN [FILE...]
-a:在二进制文件夹中,以文本文件的方式搜索数据。
-i:忽略大小写
--color:将匹配的字符串以颜色基于现实
-v:反向查询,即显示出没有被‘搜索字符串’内容的哪一行
-o:只显示被模式匹配的字符串
grep -o "root" /etc/passwd
root
....
-n:输出行号
-c:计算找到‘搜索字符串’的次数
-A:# 匹配结果并将匹配结果的后#行一并显示
-B: # 匹配结果并将匹配结果的前#行一并显示
-C:A and b 显示匹配结果前和后各几行。
正则表达式就是里面有一些元字符,这些字符不表示它本身的意思,而表示通配的意义。介绍grep进行文件搜索时所用到的云字符并加以介绍搜索特定字符串、利用[]来搜索集合字符、任意一个字符(.)与重复字符(*)、
行首与行尾字符^$、限定连接重复字符范围{}、位置锚定、组下面我们就来一起学习元字符的含义:
^ : 锚定行首
例如:
"^root":表示以root作为行首进行查找
$ : 锚定行尾
例如:
"nologin$":表示查找以nologin结尾所匹配的行
. : 匹配任意单个字符
例如:
"r..t":表示查找以r开头,t结尾并且中间存在两个字符匹配的行
* : 一个单字符后紧跟*,匹配0个或多个此单字符
例如:
"ok*":表示以o为开头后面可以没有k个字符,也可以出现多次
.*: 任意字符
例如:
"root.*":表示查找以root开头后面跟任意字符所匹配的行
[]:匹配[]内字符序列范围
例如:
"[a-z]"表示匹配[]任意一个小写字母
[^]:匹配[]内以外的字符串
例如:
"[^root]":表示除root以外的行
^$:显示空白行
例如:
"^$":表示以空白行作为模式并显示匹配的行
<: 其后面的任意string必须作为单词首部出现
例如:
"<root":表示查找以root作为模式而且必须出现在行首
>: 其前面的任意string必须作为单词尾部出现
例如:
"nologin>":表示查找以root作为模式而且必须出现在行尾
<sting>: 以string为整体并进行对文本文件进行查找
例如:
"<root>":表示以root为单词并进行搜索
():分组
例如:
(ab)*:把ab当作整体,ab可以出现0次,1次,或多次
()1:引用第一个左括号以及与之对应的右括号所包括的所有内容
2:
3:
例如:
(ab)1:表示以ab为以个整体显示,并引用前面ab字符串显示出来 :用来注释一个元字符的特殊含义。因为有在shell中一些元字符有特殊含义。
例如:
"/"表示查找以"/"作为模式进行查找
pattern{m}:用来匹配前面pattern出现n次
例如:
"root{2}:表示匹配root字符串而且必须出现2次
pattern{m, }:用来匹配前面pattern至少m次,多则不限
例如:"root{1, }:表示至少出现1次root,多则不限
pattern{m,n}:用来匹配前面pattern至少m次,至多n次
例如:
"root{1, 2}:表示至少出现1次root,至多2次
  • 1
  • 2
  • 下一页
Linux用户、组的管理常用到的命令介绍Linux系统文件查找命令find的基本使用及其高级用法相关资讯      Grep  正则表达式  sed 
  • JavaScript正则表达式详解  (08月11日)
  • Java处理正则表达式特殊字符转义  (08月03日)
  • Python 正则表达式基础  (04月09日)
  • Linux文本处理工具grep和正则表达  (08月09日)
  • Linux正则表达式初入门  (07月27日)
  • Python的正则表达式  (03月24日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数