欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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开头的文件
grep命令
显示包含数字的文件
grep命令

显示名字中包含了非字母或数字等特殊符号的文件
grep命令
疑问?grep命令

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开有的行;使用两种方式哦
grep命令
grep命令
grep命令
2、显示/etc/passwd文件中不以/bin/bash结尾的行;
grep命令

3、显示/etc/passwd中ID好最大的用户的用户名
grep命令

sort用法
-t:分隔符
-n:数字排序
-b:忽略每行前面空格
-r:降序排列
-f:忽略大小写
-k:指定排序空间
-o:将结果保存至文件
4、如果用户root存在,显示其默认的shell程序
grep命令

关于NF的用法
grep命令

5、找出/etc/passwd下的两位数或三位数
grep命令
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命令