菜鸟学Linux 第013篇笔记 grep及正则表达式

简介:

菜鸟学Linux 第013篇笔记 grep及正则表达式



正则表达式:REGular EXEpression, REGEXP

Basic REGEXP: 基本

Extended REGEXP: 扩展



文本查找

grep, egrep, fgrep

grep: Global Research

使用基本正则表达式定义的模式来过滤文本的命令

根据模式搜索文本,并将符合模式的文本行显示出来

pattern: 文本字符和正则表达式的元字符组合而成的匹配条件]


command

grep (grep, egrep, fgrep - print lines matching a pattern)

-i, --ignore-case

--color Surround  the  matching  string  with  the  marker find in

GREP_COLOR environment  variable.

-v, --invert-match

Invert(倒置,反转)  the  sense  of  matching,  to  select non-matching

            lines.

-o, --only-matching

              Show  only  the  part of a matching line that matches PAT-TERN.

-E, --extended-regexp

              Interpret(解释,说明)  PATTERN  as an extended regular expression (see

              below).

-A NUM, --after-context=NUM(number)

              Print  NUM lines of trailing(结尾) context after matching lines.

              Places a line containing -- between contiguous(adj.相邻的)  groups  of

              matches.

-B NUM, --before-context=NUM

              Print NUM lines of leading(头) context before matching  lines.

              Places  a  line containing -- between contiguous groups of

              matches.

-C NUM, --context=NUM

              Print NUM lines of output context(上下).  Places a line contain-

              ing -- between contiguous groups of matches.

  

  

正则表达式:REGular EXEpression, REGEXP

元字符:匹配字符

. 表示匹配任意字符

.* 表示匹配任意字符任意长度

[] 匹配指定范围内的任意字符

[^] 匹配指定范围外的任意字符

字符集 [:digit:], [:lower:], [:upper:], [:punct:], [:space:],

[:alpha:], [:alnum:]

匹配次数(贪婪模式)

* 表示匹配其前面的字符任意次

\? 表示匹配其前面的字符1次或0次

\{m,n\} 表示匹配其前面的字符至少m次,至多n次

位置锚定

^ 锚定行首,此字符后边的模式匹配必须出现在行首

$ 锚定行尾,此字符前边的模式匹配必须出现在行首

^$ 表示空白行

\<或\b 锚定词首,表示其后面的任意字符必须作为单词首部出现

\>或\b 锚定词尾,表示其前面的任意字符必须为单词的尾部出现


分组:

\(\) 表示一个组,组里边的内容被看为整体,并且可以在后用某个字符来引用前边的分组

\1 表示引用前边从左起第1个左括号开始到与之对应的右括号结束匹配的内容

\2 ……

\n 表示引用前边从左起第n个左括号开始到与之对应的右括号结束匹配的内容

e.g.

\(ab\)* 匹配ab在行里可以出现0-n次

ab* 而不加则表示的是

grep '\(l..e\).*\1' test3.txt 

grep '\([0-9]\).*\1' /etc/inittab 

小练习(翻译含义)

grep '[[:digit:]]$' /etc/inittab 

grep '[[:space:]][[:digit:]]$' /etc/inittab 

grep '\broot\b' test2.txt

grep 'root\>' test2.txt

grep '\<root' test2.txt




扩展正则表达式grep -E= egrep

字符匹配:

. 表示匹配任意字符(同正则)

.* 表示匹配任意字符任意长度(同正则)

[] 匹配指定范围内的任意字符(同正则)

[^] 匹配指定范围外的任意字符(同正则)


次数匹配:

* 表示匹配其前面的字符任意次(同正则)

? 表示匹配其前面的字符1次或0次(同正则)

+ 匹配其前面的字符至少一次

{m,n} 同正则表达式只是不需要插入转译字符'\'



位置锚定:

^ 锚定行首,此字符后边的模式匹配必须出现在行首(同正则)

$ 锚定行尾,此字符前边的模式匹配必须出现在行首(同正则)

^$ 表示空白行(同正则)

\<或\b 锚定词首,表示其后面的任意字符必须作为单词首部出现(同正则)

\>或\b 锚定词尾,表示其前面的任意字符必须为单词的尾部出现(同正则)



分组的:含义相同只是不需要转译字符'\'(同正则)

()

\1, \2, \n ..


或者

e.g.

C|cat C或cat

grep -E 'C|cat' test6.txt 匹配 C 或cat 

grep -e '(C|c)at' text6.txt 匹配 Cat 或 cat



练习:

1、找出某文件中的,1位数,或2位数;

2、找出ifconfig命令结果中的1-255之间的整数;

3、查找当前系统上名字为user8(必须出现在行首)用户的账号的相关信息,/etc/passwd;















KEY

1、#grep -E '[[:digit:]]{1,2}' /proc/cupinfo

2、#ifconfig | egrep --color '\<([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-9][0-9])\>'

3、#grep -E '^(user8)' /etc/passwd

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1861361如需转载请自行联系原作者


Winthcloud

相关文章
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
2月前
|
Linux
认识Linux指令之 “find grep” 命令
认识Linux指令之 “find grep” 命令
认识Linux指令之 “find grep” 命令
|
1月前
|
存储 监控 Linux
性能工具之linux三剑客awk、grep、sed详解
Linux 三剑客 awk,sed和grep 在性能领域广泛用于性能建模、性能监控及性能分析等方面,也是各大互联网公司测试岗高频面试题,中高端测试人员必备技能之一。
51 1
性能工具之linux三剑客awk、grep、sed详解
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
7天前
|
Linux
Linux 指令|date|cal|find|grep|热键
Linux 指令|date|cal|find|grep|热键
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
29天前
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
30 4
|
1月前
|
运维 Unix Linux
grep正则表达式搜索
grep正则表达式搜索
16 3
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
Linux 数据安全/隐私保护 Android开发
10 个最佳 Linux 开源笔记软件
10 个最佳 Linux 开源笔记软件
109 1