标签:匹配 大小写 大于等于 行号 ash grep -v 格式 工具 pass
grep/egrep 工具的使用格式:grep [-cinvABC] ‘word‘ filename
grep -c ‘root‘ passwd 统计passwd 里面包含root的行数
grep -i ‘root‘ passwd 把passwd文件中包含root(字母不区分大小写) 打印到输出界面
grep -n ‘root‘ passwd 把passwd文件中包含root的行打印出来,且显示第几行
grep -v ‘root‘ passwd 把passwd文件中不包含root 的行打印出来
grep -r ‘root‘ /etc/ 查找/etc目录下所有子目录子文件中包含root的行
grep -A2 ‘root‘ passwd 打印出包含root的行和下面两行
grep -B2 ‘root‘ passwd 打印出包含root的行和上面两行
grep -C2 ‘root‘ passwd 打印出包含root的行和上面两行,下面两行,总共五行
1,过滤出带有某个关键词的行,并输出行号
[root@jinkai01 grep]# grep -n ‘root‘ passwd
打印出包含 root 的行
2,过滤出不带有某个关键词的行,并输出行号
[root@jinkai01 grep]# grep -nv ‘root‘ passwd
打印出不包含 root 的行
3,过滤出所有包含数字的行(只要有一个数字匹配到就算)
[root@jinkai01 grep]# grep ‘[0-9]‘ passwd
将passwd 中包含 数字0-9的行打印出来
4,过滤出所有不包含数字的行
[root@jinkai01 grep]# grep -v [0-9] inittab
将passwd 中不包含数字 0-9的行打印出来
5,过滤掉所有以#开头的行 (这里面包含了空行)
[root@jinkai01 grep]# grep -v ‘^#‘ inittab
将inittab 文件中不是以 #号开头的行打印出来,空行也算
6,过滤掉所有空行和以#开头的行
[root@jinkai01 grep]# grep -v ‘^#‘ inittab | grep -v ‘^$‘
将inittab文件中不是以#号开头的行且非空行打印出来
在正则表达式中,^表示行的开始,$表示行的结尾,那么空行则可以用^$表示。
7,打印出不以英文字母开头的行
[root@jinkai01 grep]# grep ‘^[^a-zA-Z]‘ a.txt 打印出以非字母开头的行
123
456
#fdasffd
[root@jinkai01 grep]# grep ‘[^a-zA-Z]‘ a.txt 打印出包含非字母的行
123
456
abc134
#fdasffd
A123
8,过滤出任意一个字符和重复字符
[root@jinkai01 grep]# grep ‘r.o‘ passwd
. 表示任意一个字符,r.o表示r 和 o 之间有任意一个字符的,例如 包含roo的就可以打印出来
root:x:0:0:root:/root:/bin/bash
[root@jinkai01 grep]# grep ‘oo*‘ passwd
- 表示零个或多个前面的字符,oo 表示一个o为基础o可以是零个或者多个,所以o oo ooo。。。都包含在内
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
*表示零个或多个任意字符,空行也包含在内
9,指定要过滤出的字符出现次数
grep ‘o{2}‘ passwd 筛选出o重复出现两次
这里用到了符号{},其内部为数字,表示前面的字符要重复的次数。需要强调的是,{}左右都需要加上转义字符\。另外,使用“{ }”还可以表示一个范围,具体格式为{n1,n2},其中n1 < n2,表示重复n1到n2次前面的字符,n2还可以为空,这时表示大于等于n1次
10,过滤出一个或多个指定的字符
egrep ‘o+‘ passwd 筛选出包含o 的一个或多个字符
和grep不同,这里egrep使用的是符号+,它表示匹配1个或多个+前面的字符,这个“+”是不支持 被grep直接使用的。包括上面的{},也是可以直接被egrep使用,而不用加\转义。示例如下
egrep o{2} passwd = grep ‘o{2}‘ passwd
11,过滤出零个或一个指定的字符
egrep ‘o?‘ passwd
?代表o到1个任意字符
12,过滤出字符串 1 或者字符串 2
egrep ‘aa|11|oo‘ passwd
将passwd 中包含aa或11或oo的行打印出来
13,egrep 中 () 的应用
egrep ‘r(oo|at)o‘ passwd 筛选出 rooo或rato 字符
这里用()表示一个整体,上例中会把包含rooo或者rato的行过滤出来,另外也可以把()和其他符号组合在一起,例如(oo)+就表示1个或者多个oo。如下所示:
egrep ‘(oo)+‘ passwd
标签:匹配 大小写 大于等于 行号 ash grep -v 格式 工具 pass
原文地址:https://blog.51cto.com/11451960/2521527