点这里看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#这里是有颜色的,复制过来的,看下图吧。
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