grep命令
程序员文章站
2022-05-12 23:09:47
...
参考:http://man.linuxde.net/grep
通配符:
*:匹配任意长度的任意字符
*n:以n结尾
?:匹配任意单个字符
???y*:表示y前面有3个字符,以任意字符结尾
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[^0-9]*:表示以非数字开头
[[:space:]]:所有的空白字符
[[:lower:]]:所有的消息小写字母
[[:upper:]]:所有的大写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:数字和大小写字母
[:alpha:][[:space:]][[:digit:]]:以字母开头,中间有空格,数字结
尾
显示以am开头的文件
显示包含数字的文件
显示名字中包含了非字母或数字等特殊符号的文件
疑问?
linux文本处理三剑客:
grep:文本过滤(模式,pattern)工具;
sed:stream editor ,行文本编辑器
awk:Linux上实现gawk,文本报告生成器
grep:Global search REgular expression and Print out the line(全局搜索正则表达式并把对应的行打印出来)
作用:文本搜索工具,根据用户指定的“模式“对目标文本逐个进行匹配检查,打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意思,而表示控制或通配的功能
基本正则表达式:BRE
扩展正则表达式:ERE
grep的用法:
grep [OPTIONS] PATTERN [FILE...]
常用选项:
--color=auto:对匹配的行文本进行着色显示
-v:显示没有被模式匹配到的行
-i:忽略字符大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-A #:after,显示匹配到的行及其后#行
-B #:before
-C #:context,前后各#行
-E:使用ERE
正则表达式:
1、元字符:
.:匹配任意单个字符
#r..t:以r开头,中间任意两个字符,以t结尾
[]:匹配指定范围的任意单个字符
[^]:指定范围外的任意单个字符
2、字符个数:
(1)*:匹配前面的字符任意次
eg:a,ab,aab,acb,adb,amnb
a*b:表示a出现了任意次(包含0次)后跟了一个b,不能跟其他字符,所以上述的a,acb,amnb,adb,都不能匹配)
(2).*:任意长度的任意字符
a.*b:表示a开头,b结尾中间任意长度任意字符
(3)\?:匹配前面的字符1次或者0次
(4)\{m.n\}:匹配前面的字符至少m次,至多n次
\{1,\}:至少1次
\{0,3\}:至多3次
(5)\+:匹配前面字符至少1次
3、位置:
(1)^:锚定行首,此字符后面的任意内容必须出现在行首
(2)$:锚定行尾,此字符前的任意内容必须出现在行尾
^$:空白行
(3)\<或\b:锚定词首,其后面的任意字符必须出现在单次首部
(4)\>或\b:锚定词尾,其前面的任意字符必须出现在单词尾部
(5)\<pattern\>
4、分组:
\(\):将一个后多个字符捆绑在一起,当作一个整体进行处理;
eg:\(ab\)*:将ab看作一个整体
5、后项引用:引用前面的分组括号的模式所匹配的字符,而非模式本身
\1:从所侧起,第一个左括号以及与之对应的右括号之间的模式匹配到的字符
\2:
\3
eg:
\(ab\+\(xy\)*\):
\1 : ab\+\(xy\)*
举些栗子:
1、显示/proc/meminfo文件中以大小s开有的行;使用两种方式哦
2、显示/etc/passwd文件中不以/bin/bash结尾的行;
3、显示/etc/passwd中ID好最大的用户的用户名
sort用法
-t:分隔符
-n:数字排序
-b:忽略每行前面空格
-r:降序排列
-f:忽略大小写
-k:指定排序空间
-o:将结果保存至文件
4、如果用户root存在,显示其默认的shell程序
关于NF的用法
5、找出/etc/passwd下的两位数或三位数
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存在非空白字符的行
[root@server1 mnt]# grep '^[[:space:]]\+.\+' /etc/rc.d/rc.sysinit
7、显示“netstat -tan“命令的结果以LISTEN后跟任意空白字符结尾的行
[aaa@qq.com mnt]# netstat -tan | grep ‘LISTEN[[:space:]]*$’
8、
上一篇: grep命令