M20 – 1- 第三周博客(3):Linux上文本处理三剑客grep

Grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

1、作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用
权限是所有用户

2、格式:

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

3、选项

--color=auto: 对匹配到的文本着色显示;
-v: 显示不能够被pattern匹配到的行;
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串;
-q: 静默模式,不输出任何信息
-A #:after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w:整行匹配整个单词
-E:使用ERE;相当于egrep

4、模式

分两类:
基本正则表达式:BRE
扩展正则表达式:ERE (grep -E, egrep)

(1)基本正则表达式元字符:

字符匹配:某个字符的匹配

. :匹配任意单个字符;
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*:匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.*:任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{m,\}:匹配前面的字符至少m次

位置锚定:定位出现的位置

^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行
\< 或\b:词首锚定,用于单词模式的左侧
\> 或\b:词尾锚定;用于单词模式的右侧
\<PATTERN\>:匹配整个单词

分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...
\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;
实例:\(string1\+\(string2\)*\)
\1: string1\+\(string2\)*
\2: string2
后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

(2)扩展正则表达式元字符:

字符匹配:某个字符的匹配

. :匹配任意单个字符;
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次

位置锚定:定位出现的位置

^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾

分组:():将一个或多个字符捆绑在一起,当作一个整体进行处理

()
后向引用:\1, \2,

或者:一种,或两种以上

a|b
C|cat: C或cat
(C|c)at:Cat或cat

原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/30556

(0)
AleenAleen
上一篇 2016-08-08
下一篇 2016-08-08

相关推荐

  • linux中的权限和ACL

    linux中权限详解和ACL

    2017-11-18
  • M20 – 1- 第三周博客:Linux中的权限以及特殊权限

    上一篇讲到了用户与用户组,相信大家都明白了Linux中用户与用户组的含义和用处,那接下来讲的就是Linux中设置用户与用户组有使用权限。 Linux用户权限 何为权限,权限(privilege)是指某个特定的用户具有特定的系统资源使用权力,而权限又有哪几种呢。 Linux用户中主要针对三类着三种权限:读、写、执行,而Linux中存在着目录与文件,而目录的权限…

    Linux干货 2016-08-08
  • 如何查看当前系统版本的版本号

    作为一名系统管理员,了解系统版本号是必然。因为不同大版本之间的命令和启动流程等之间有很大的差异;     一、在/etc/system-release 里面查看         ~]#ls -l /etc/system-release &n…

    Linux干货 2016-07-29
  • 第二周-作业

    第二周作业: 题1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 Linux上常见的文件管理类命令有mkdir、touch、cp、mv、rm、stat。     mkdir:创建新目录         用法:mk…

    Linux干货 2016-12-08
  • 第二周作业

    新建 Microsoft Word 文档.docx

    Linux干货 2016-12-13
  • 马哥教育网络班20期+第2周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 文件管理命令:ls、cd、pwd、mkdir、rmdir、cp、rm.、mv、touch、cat、more、less、head、tail 1)ls命令:显示目录文件   -a 显示所有文件,包括隐藏文件  ~]# ls -a /etc.  &n…

    Linux干货 2016-06-23