文章目录

  • 1、grep命令
  • 2、grep命令和find命令的区别
  • 3、通配符与正则表达式
  • 1. 通配符:
  • 2.正则表达式



点这里看find命令←

1、grep命令

grep 的作用是在文件中提取和匹配符合条件的字符串,找到包含“搜索内容”的字符串
格式:
grep [选项] “搜索内容” 文件名

选项

作用

-i

忽略大小写

-v

反向选择

-n

输出行号

-color=auto

搜索出来的字符串以颜色显示

[root@akun ~]# cat wsx 
my name is Xiaokun
my name is xiaokun
The author is very handsome
#写了个文件看下grep的功能
[root@akun ~]# grep "xiaokun" wsx 
my name is xiaokun
[root@akun ~]# grep -i "xiaokun" wsx 
my name is Xiaokun
my name is xiaokun
[root@akun ~]# grep -v "xiaokun" wsx
my name is Xiaokun
The author is very handsome
[root@akun ~]# grep -vi "xiaokun" wsx
The author is very handsome
[root@akun ~]# grep --color=auto -i "xiaokun" wsx
my name is Xiaokun
my name is xiaokun#这里是有颜色的,复制过来的,看下图吧。

grep 搜索中文字符 grep搜索特殊字符和通配符_正则表达式

2、grep命令和find命令的区别

1、find命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,搜索时文件名是完全匹配的(find命令可以通过-regex选项,把匹配规则转为正则表达式规则,但不建议这样。)
2、grep命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达是进行匹配。搜索时字符串是包含匹配
点这里看find命令←

3、通配符与正则表达式

1. 通配符:

用于匹配文件名,完全匹配

通配符

作用


匹配一个任意字符

*

匹配0个或多个任意字符,也就是可以匹配任意内容

[]

匹配括号中任意一个字符。例如:[abc]代表匹配a或b或c其中一个

[-]

匹配括号中的任意一个字符,-代表范围,如:[0-9]表示匹配一个数字

[^]

逻辑非,表示匹配一个不是括号内的字符,例如,[^0-9]代表匹配一个不是数字的字符

注:使用通配符要用“”双引号括起来
[A-Z]匹配任意大写字母,[A-Za-z]表示匹配所有字母

例:

[root@akun tmp]# ls
abbc  abc  adc
[root@akun tmp]# find . -name "ab*"
./abc
./abbc
[root@akun tmp]# find . -name "a?c"
./adc
./abc
[root@akun tmp]# find . -name "a[db]c"
./adc
./abc
[root@akun tmp]# find . -name "a[^b]c"
./adc
2.正则表达式

用于匹配字符串,文件内容,包含匹配

正则符

作用

?

匹配前一个字符重复0次或一次

*

匹配前一个字符重复0次,或多次

[]

匹配中括号中任意一个字符。如:[abc]代表匹配a或b或c其中一个

[-]

匹配括号中的任意一个字符,-代表范围,如:[0-9]表示匹配一个数字

[^]

逻辑非,表示匹配一个不是括号内的字符,例如,[^0-9]代表匹配一个不是数字的字符

^

匹配首行,如“^a”表示以a为行首的内容

$

匹配尾行

shell把正则表达式中的?作为“扩展正则”,使用?号时要使用 egrep (也就是grep -E)
‘egrep’即‘grep -E’。‘fgrep’即‘grep -F’。

看下grep的帮助:

[root@akun ~]# egrep --help
用法: egrep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: egrep -i 'hello world' menu.h main.c

正则表达式选择与解释:
  -E, --extended-regexp     PATTERN 是一个可扩展的正则表达式(缩写为 ERE)

做个例子:

[root@akun ~]# cat wsx 
23my name is Xiaokun
my name is xiaokun123
The author is very handsome
abcddddd
nnabcd
[root@akun ~]# egrep "n?" wsx 
#?n重复0次或多次,其实也就是有没有n都行,所以筛选出来是全部内容。
23my name is Xiaokun
my name is xiaokun123
The author is very handsome
abcddddd
nnabcd
[root@akun ~]# egrep "nn?" wsx 
23my name is Xiaokun
my name is xiaokun123
The author is very handsome
nnabcd
[root@akun ~]# grep "dd*" wsx 
The author is very handsome
abcddddd
nnabcd
[root@akun ~]# grep "ddd*" wsx 
abcddddd
[root@akun ~]# grep ^[0-9] wsx 
23my name is Xiaokun
[root@akun ~]# grep [0-9]$ wsx 
my name is xiaokun123

点这里看find命令←