Linux-grep
grep功能:
擅长过滤
2.2 参数:
-n ------显示行号
-v ------取反,排除
-i ------不区分大小写
-w ------根据单词进行过滤(两边有空格 特殊符号)
grep==egrep 或 grep -E;是否支持扩展正则
| -----或者
-o -----显示执行过程,显示出grep匹配的内容
-E -----可以使用扩展正则
-c -----统计搜索字符的行数
-r -----递归调用
-l -----只显示文件名称+路径
-A -----打印匹配本身以及下面几行的内容
-B -----打印匹配本身以及上面几行的内容
-C -----打印匹配本身以及下面几行、上面几行的内容
2.2.1 参数示例:
2.2.1.1 查找113或103的内容)
使用参数:| (或者)
root@deem /oldboy]# egrep '1(1|0)3' sed.txt (103,Alex,COO
2.2.1.2 查找目录下包含xxx的内容的文件
使用参数:-r:递归调用
[root@web01 ~]# grep -r '9' /server/scripts/
/server/scripts/1/hah.sh:url = ['https://live.kuaishou.com/u/3xv83wrxssweftm/3xednr6zjfte9m9',
/server/scripts/1/hah.sh: 'https://live.kuaishou.com/u/3xv83wrxssweftm/3xednr6zjfte9m9',
/server/scripts/1/kuaishou.sh:wget -q https://live.kuaishou.com/u/3xv83wrxssweftm/3xednr6zjfte9m9 -O /dev/null
2.2.1.3 只显示文件名称+路径,不显示文件内容
使用参数:管道(|) -r
[root@web01 ~]# grep -rl '9' /server/scripts/
/server/scripts/1/bakup.sh
/server/scripts/1/etc/fstab
/server/scripts/1/hah.sh
/server/scripts/1/kuaishou.sh
2.2.1.4 grep后向引用 \1
[root@web01 oldboy]# egrep -o '(.)\1*' 01.txt
b
aa
bbb
2.2.1.5 显示匹配21oldbg后4行
使用参数:- A
[root@web01 ~]# grep -A 4 '21oldbg' /etc/passwd
21oldbg:x:1092:1092::/home/21oldbg:/bin/bash
21olddog:x:1093:1093::/home/21olddog:/bin/bash
gou:x:1094:1094::/home/gou:/bin/bash
bg:x:1095:1095::/home/bg:/bin/bash
dog:x:1096:1096::/home/dog:/bin/bash
2.2.1.6 显示匹配21oldbg上面的2行
使用参数:-B
[root@web01 ~]# grep -B 2 '21oldbg' /etc/passwd
21oldboy:x:1090:1090::/home/21oldboy:/bin/bash
21oldgou:x:1091:1091::/home/21oldgou:/bin/bash
21oldbg:x:1092:1092::/home/21oldbg:/bin/bash
2.2.1.7 显示匹配21oldbg上面和下面的2行
使用参数:-C
[root@web01 ~]# grep -C 2 '21oldbg' /etc/passwd
21oldboy:x:1090:1090::/home/21oldboy:/bin/bash
21oldgou:x:1091:1091::/home/21oldgou:/bin/bash
21oldbg:x:1092:1092::/home/21oldbg:/bin/bash
21olddog:x:1093:1093::/home/21olddog:/bin/bash
gou:x:1094:1094::/home/gou:/bin/bash
2.2.1.8 将下列字母进行拆分,相同字母排为一行
[root@web01 oldboy]# echo "baabbbccccddddeeeefffff"|egrep -o '(.)\1*'
b
aa
bbb
cccc
dddd
eeee
fffff
2.正则表达式实战
1. 正文:
I am lizhenya teacher!
I teach linux.
test
I like badminton ball ,billiard ball and chinese chess!
my blog is http:// blog.51cto.com
our site is http://www.lizhenya.com
my qq num is 593528156
not 572891888887.
例题:
过滤以m开头的行
[root@Shell ~]# grep "^m" test.txt
my blog is http:// blog.51cto.com
my qq num is 572891887.
过滤以m结尾的行
[root@Shell ~]# grep "m$" test.txt
my blog is http:// blog.51cto.com
our site is http://www.lizhenya.com
排除空行, 并打印行号
[root@student ~]# grep -vn "^$" lizhenya.txt
[root@web01 oldboy]# grep -n '.' zz.tat
** 匹配任意一个字符,不包括空行**
[root@student ~]# grep "." lizhenya.txt
匹配所有
[root@student ~]# grep ".*" lizhenya.txt
匹配单个任意字符
[root@node1 ~]# grep "lizhen.a" lizhenya.txt
以点结尾的
[root@student ~]# grep "\.$" lizhenya.txt
精确匹配到
[root@student ~]# grep -o "8*" lizhenya.txt
匹配有abc的行
[root@student ~]# grep "[abc]" lizhenya.txt
匹配数字所在的行"[^0-9]"
[root@student ~]# grep "[0-9]" lizhenya.txt
11、匹配所有小写字母[^a-z]
[root@student ~]# grep "[a-z]" lizhenya.txt
12、重复0三次
[root@student ~]# grep "8\{3\}" lizhenya.txt
13、重复3个000不用转义符
[root@student ~]# grep -E "8{3}" lizhenya.txt
14、重复数字8, 3-5次
[root@student ~]# grep -E "8{3,5}" test.txt
15、至少1次或1次以上
[root@student ~]# grep -E "8{1,}" lizhenya.txt
标签:bin,grep,lizhenya,Linux,txt,root,bash
From: https://www.cnblogs.com/megshuai/p/18251760