搜索命令-grep命令、通配符、正则表达式


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

--color选项

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命令←

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值