Linux-grep

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
posted @ 2024-06-17 09:34  帅帅啊  阅读(42)  评论(0)    收藏  举报