一、grep、egrep命令格式介绍:
grep和egrep是关于文本处理的命令,给定选取条件,只显示符合条件的行。
使用的格式为:grep [options] 'pattern' FILE
egrep [options] 'pattern' FILE
格式说明:options 表示选项 pattern 表示过滤模式 FILE 表示需要处理的文件
二、grep常用的选项
pattern表示过滤模式,使用正则表达式来描述选择条件,下面详细介绍正则表达式的有关内容;
三、正则表达式
正则表达式分为两种:基本正则表达式和扩展正则表达式
grep 支持基本的正则表达式 egrep 支持扩展的正则表达式,因此有上述选项-E 可知 grep -E相当于egrep
3.1、基本正则表达式
基本正则表达式:工作在贪婪模式下,即尽可能长的去匹配符合模式的内容
包括的元字符有:(注:元字符不表示字符本身的意义而用于额外功能性的描述)
3.2、 扩展正则表达式
- .:任意单个字符
- []:指定范围内的任意单个字符
- [^]:指定范围外的任意单个字符
- *:匹配前面的字符任意多次
- +:匹配前面的字符至少一次
- ?:匹配前面的字符0次或一次
- {m,n}:至少m次,至多n次;
- ():分组,支持引用\1,\2
- a|b;二选一,或者,a或者b
- \<:锚定词首
- \>:锚定词尾
- ^:锚定行首
- $:锚定行尾
- 单词锚定和行首行尾锚定和基本正则表达式一样
注:如果想详细了解正则表达式元字符的相关说明可以通过 man regex进行查看
3.3、常用的字符集合
- [:digit:]:所有数字,相当于0-9
- [:lower:]:所有的小写字母
- [:upper:]:所有的大写字母
- [:alpha:]:所有的字母
- [:alnum:]:相当于[0-9a-zA-Z]
- [:space:]:空白字符
- [:punct:]:所有标点符号
四、实例讲解
4.1、基础简单实例
- #cat test.txt
- 1
- 12
- 123
- adc
- abc abc def ghi
- a 2 33 45
- 1 asd da a
- abcdab
- abcdba
- 12abcd12
- mnlanliannm
- 1a
- bc
- a1
- aab
- aaac
- aabaaacaaaad
注:grep用了命令别名:# alias grep='grep --color=auto'
1.匹配以a开头的行
2.匹配以c结尾的行
3.匹配a后面跟任意单个字符
4.匹配a出现任意次数
5.匹配a后面跟任意一个字符出现任意次数
6.匹配一个数字
7.匹配一个数字结尾的行
8.匹配一个数字开头的行
9.匹配一位数
10.匹配非数字行
11.匹配一个数字或0个数字的行
12.匹配一个或0个数字开头的行
13.匹配一个或0个数字开头并结尾的行
14.匹配至少出现三次的数字的行
15.匹配至多出现两次的数字的行
16.匹配字母2次行
17.一个或两个字母进行词首锚定的行
18.匹配一或两次字母,进行词尾锚定的行
19.匹配一到两个字母的单词行
4.2、综合实例
1.显示/proc/meminfo文件中以不区分大小的s开头的行;
2.显示/etc/passwd中以nologin结尾的行;
3、显示/etc/rc.d/rc.sysinit中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
4、显示/etc/rc.d/rc.sysinit中符合形为“任意单个字符n任意字符任意单个字符n”模式的行;即任意单个字符后面跟了个n,n后面有任意长度的任意字符,而后是任意单个字符后面跟了个n,但后面的n之前的字符要与前面的n之前的字符相同;
说明:本博文仅根据自己所学知识归纳总结和实现,望对初学者有所帮助!