您的位置:首页 > 文旅 > 美景 > 网络服务供应商_合肥广告牌制作公司_百度问答库_关键词查网址

网络服务供应商_合肥广告牌制作公司_百度问答库_关键词查网址

2024/12/23 7:31:12 来源:https://blog.csdn.net/qq_58158950/article/details/144332321  浏览:    关键词:网络服务供应商_合肥广告牌制作公司_百度问答库_关键词查网址
网络服务供应商_合肥广告牌制作公司_百度问答库_关键词查网址

介绍

作用

Linux grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。

常用选项

  • -i忽略大小写进行匹配。
  • -v反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号
  • -r递归查找子目录中的文件。
  • -l只打印匹配的文件名
  • -c:只打印匹配的行数
  • -w: 只输出完全匹配的内容
  • -E :启用正则表达式进行查找
  • -e: 指定查找内容,可以跟多个

示例

数据准备

 cat file1.txt
hello
helloworld
Hello
Helloworld in the testfilel.txt
today is a sunny day
1231adac

案例

普通查找

grep查找对字母大小写敏感,如下显示为,查找包含字符串hello的行

grep hello file1.txt
hello
helloworld

 忽略大小写

由于grep查找对字母大小写敏感,如果想忽略大小写,可以使用-i选项,如下所示

 grep -i hello file1.txt
hello
helloworld
Hello
Helloworld in the testfilel.txt

反向查找

查找不包含hello的行

grep -v hello file1.txt
Hello
Helloworld in the testfilel.txt
today is a sunny day

显示匹配的行号

如果要显示匹配到字符串内容在文本中的行号,可以使用-n选项

如下,查找所有包含hello的行,忽略大小写,同时显示出查找到行的行号

grep -in hello file1.txt
1:hello
2:helloworld
3:Hello
4:Helloworld in the testfilel.txt

递归查找

如下,在test文件夹下有两个文件file1.txt和file2.txt,其中file2.txt的内容和file1.txt一样

(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ ls
file1.txt  file2.txt

查找当前文件夹下所有包含hello的文件

 grep -r hello ./
./file2.txt:hello
./file2.txt:helloworld
./file1.txt:hello
./file1.txt:helloworld

查找当前文件夹下所有包含hello的文件,同时忽略大小写

grep -ri hello ./
./file2.txt:hello
./file2.txt:helloworld
./file2.txt:Hello
./file2.txt:Helloworld in the testfilel.txt
./file1.txt:hello
./file1.txt:helloworld
./file1.txt:Hello
./file1.txt:Helloworld in the testfilel.txt

只打印匹配的文件

-l选项只打印匹配的文件,通常用于判断文件内是否包含匹配字符串的内容

(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ grep -l hello file1.txt
file1.txt
(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ grep -l hjj file1.txt
(base) jl@jin-X299X-AORUS-MASTER:~/test/test$

只打印匹配的行数

如下,使用-c选项查找包含字符串hello的内容有几行

(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ grep -c hello file1.txt
2
(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ grep hello file1.txt
hello
helloworld

只输出完全匹配的内容

如下所示,判断文件内是否包含有字符串hello,如果有就显示hello,如果没有则不显示

(base) jl@jin-X299X-AORUS-MASTER:~/test/test$ grep -w hello file1.txt
hello

查找多个内容

查找文件中包含字符串hello或者字符串today的行

方案一,使用-e选项
grep -e hello -e today file1.txt
hello
helloworld
today is a sunny day
方案二,使用正则表达式
grep -E 'hello|today' file1.txt
hello
helloworld
today is a sunny day

查找包含数字的行

启用正则表达式查找包含数字的行

grep -E '[1-9]' file1.txt
1231adac

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com