grep命令的功能:从文本文件或管道数据流中筛选匹配的行及数据(一般会配合正则表达式一起使用)
语法:
grep 【options】PATTERN FILE
options:选项
PATTERN: 匹配模式
FILE: 文件
常用的选项:
-v 显示不匹配的行(取反)
-i 不区分大小写
-E 使用扩展正则表达式
--color=auto 为grep过滤的匹配字符串添加颜色
-o 只输出匹配到的内容
范例:去除配置文件里面的注释和空行
grep -Ev "^$|#" nginx.conf #<==^$表示过滤空行,是正则表达式的内容。
二)正则表达式
字符匹配:
. 匹配单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[[:digit:]] 匹配所有数字
[[:space:]] 匹配所有空白字符
[[:punct:]] 匹配所有的标点符号
[[:alpha:]] 匹配所有的字母
[[:alnum:]] 匹配所有的字母和数字
次数匹配: 在期望匹配到的字符后面提供一个控制符,用于表达匹配其前面的字符指定的次数
* 任意长度(前面字符的任意长度)
\? 匹配其前面的字符0次或1次,表示其前面(左侧)字符可有可无
\+ 匹配其前面的字符1次或多次, 表示其前面(左侧)字符至少出现一次
\{m\} 精确匹配M次,表示其前面(左侧)字符精确出现M次
\{m,n\} 至少M次,至多N次,表示其前面(左侧)字符最少出现M次,最多出现N次
位置匹配:
^: 锚定行首,注意^一定要写在最前面
$: 锚定行尾 ,注意^一定要写在最右边 ---^PATTERN$ 锚定整行内容
^$: 匹配空白行
单词锚定:由非特殊字符组成的连续的字符串
\< 锚定词首, \<PATTERN ,也可以用\bPATTERN
\> 锚定词尾 ,\>PATTERN
\<PATTERN\> 匹配整个单词
分组
\(\)
分组中的模式,在某次的具体匹配过程中所匹配的字符,可以被记忆下来。保存于内置的变量中使用\1,\2等的内置变量中,因此还可以被引用\1: 引用,模式中自左而右,由第一个左括号以及与之对应的右括号中模式匹配到的内容\2: 引用,模式中自左而右,由第二个左括号以及与之对应的右括号的模式所匹配的内容
扩展正则表达式
1)把基本正则表达式中需要用\转义的,都不需要咯,例如
\{\}---在扩展正则中,可以直接{}
\(\)-----在扩展正则中,可以直接( )
2)新增一个 |,例如
[root@fenfa tmp]# egrep -i --color=auto "yuki|alex" test1.txt
yuki
ALEX
范例:
1)找出/pro/meminfo文件中,所有以大写或小写s开头的行
[root@fenfa tmp]# cat /proc/meminfo |grep --color=auto -E "^(s|S)"
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 188 kB
Slab: 150308 kB
SReclaimable: 130428 kB
SUnreclaim: 19880 kB
2)找出functions中某个单词后面有一个小括号的
[root@fenfa tmp]# cat /etc/rc.d/init.d/functions |grep -Eo "[_[:alnum:]]+\(\)"
3)使用echo命令输出一绝对路径,使用grep取出其基名
[root@fenfa tmp]# echo /etc/sysconfig/network |grep --color=auto -Eo '\<[^/]+/?$'
network
[root@fenfa tmp]# echo "/mnt/sdc/" |grep -Eo "[^/]+/?$" |cut -d/ -f1
sdc
使用grep取路径名
[root@fenfa tmp]# echo /etc/sysconfig/network-scripts/ifcfg-eth0 |grep --color=auto -Eo '^/.*/'
/etc/sysconfig/network-scripts/
4)找出rc.sysinit文件中,失少一个空白字符开头,且后面跟一个非空白字符的行
[root@fenfa tmp]# cat /etc/rc.d/rc.sysinit |grep "[[:space:]]\+[^[:space:]]"
5)
[root@fenfa tmp]# netstat -tan|grep "LISTEN[[:space:]]*$"
6)显示当前系统root,centos用户的默认的shell和uid
[root@fenfa tmp]# grep -E "^(root|centos)\>" /etc/passwd|cut -d: -f1,3,7
root:0:/bin/bash
centos:1001:/bin/bash
- 第一章:文件和目录操作类命令
- 第一节:pwd命令
- 第二节:cd命令
- 第三节:mkdir命令
- 第四节:touch命令
- 第五节:ls命令
- 第六节:cp命令
- 第八节: mv命令
- 第九节:ln命令
- 第十节:find命令
- 第十一节:chattr命令
- 第十二节:chown命令
- 第十三节:chmod命令
- 第二章:文件过滤和内容编辑类命令
- 第一节: cat命令
- 第二节:less命令
- 第三节:head命令
- 第四节:tail命令
- 第五节:cut命令
- 第六节:sort命令
- 第七节:wc命令
- 第八节:tr命令
- 第三章:文本处理三剑客
- 第一节:grep命令
- 第二节:sed命令
- 第四章:linux信息显示类或搜索命令
- 第一节:uname命令
- 第二节:du命令
- 第三节:data命令
- 第四节:echo命令
- 第五节:watch命令
- 第五章: 文件备份和压缩类命令
- 第一节:tar命令
- 第二节:gzip压缩
- 第三节:zip和upzip命令
- 第四节:scp命令
- 第五节: rsync文件同步工具命令
- 第六章:Linux用户管理及用户信息查询类命令
- 第一节:useradd命令
- 第二节:usermod命令
- 第三节:userdel命令
- 第四节:groupadd和groupdel命令
- 第五节:passwd命令
- 第六节:su命令
- 第七节:visudo命令
- 第八节:id命令
- 第九节:w和who命令
- 第十节:last和lastb命令
- 第七章: Linux磁盘及文件系统管理
- 第一节:fdisk命令
- 第二节: partprobe命令
- 第三节:parted磁盘分区工具
- 第四节:mkfs命令
- 第五节:dumpe2fs命令
- 第六节: fsck命令
- 第七节:mount和umount命令
- 第八节:dd命令
- 第九节:df命令