grep命令使用大全

🎀 关于博主👇🏻👇🏻👇🏻

🥇 作者简介: 热衷于知识探索和分享的技术博主。
💂 csdn主页::【奇妙之二进制
✍️ 微信公众号:【Linux 世界

🎉精彩专栏:

🎓 【面向工作git基础教程
​ 🧡 【C++11新特性深入剖析
​ 📚【shell脚本编程基础与实战
​ 🌎【Linux网络编程面试演练
✍️ 【C++编译工具cmake入门到精通
​ …

💂关于作者: 曾就职于国内知名安防上市公司,现就职于国内知名AMR机器人公司,担任高级系统软件工程师。2020年至今保持CSDN博客专家,CSDN C/C++领域优质创作者头衔。全网5万+粉丝。十载寒冰,难凉热血;多年过去,历经变迁,物是人非。 然而,对于技术的探索和追求从未停歇。 💪坚持创作,热衷分享,初心未改,继往开来!


grep 指令用于查找文件里匹配指定模式的字符串,如果发现某文件的内容符合所指定的pattern,预设 grep 指令会把含有样式的那一行打印出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

语法

       grep [OPTION...] PATTERNS [FILE...]
       grep [OPTION...] -e PATTERNS ... [FILE...]
       grep [OPTION...] -f PATTERN_FILE ... [FILE...]

实例

1、在当前目录中,查找后缀有 .cpp 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

grep test *.cpp

2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:

grep -r update /etc/acpi 

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:

grep -v test *test*

grep的高级用法是开启-E选项。

4、grep -E 同时匹配多个关键字–或关系

grep -E "word1|word2|word3" file.txt

5、-E和-v可以一起使用

grep -E -v "test|good" *.cpp

6、grep会打印包含匹配pattern的一整行,如果我们期望只打印匹配的pattern,使用-o选项

7、-w可以实现完整单词匹配,也很有用。例如:

$ grep -w "hello" *.cpp

包含helloworld的行是不会显示的,因为只会匹配含有hello单词的行,单词意味着其前后要有空格间隔。

8、-A n A是after的意思 除了显示匹配行,还会显示匹配行后面n行。

-B n B是before的意思 除了显示匹配行,还会显示匹配行前面n行。

-C n C是after的意思 显示匹配行上下各n行。

9、–exclude-dir=GLOB 递归搜索时排除匹配模式的目录

10、–exclude-from=FILE 排除匹配模式的文件。

11、-n 顺带输出匹配行的行号

$ grep -n "test" *.cpp                                                                            127
3:test good

12、以某个单词开头/结尾的行

 grep -E "^hello" *.cpp 
 grep -E "world$" *.cpp 

13、不是以某个字母开头/结尾的行

grep -E "[^#]" *.cpp

14、.是特殊字符,表示匹配一个单词。

下面的正则表达式查找 IP 地址 192.168.1.254 将不能获得预期的结果:

grep '192.168.1.254' /etc/hosts

其中三个点都需要被转义:

grep '192\.168\.1\.254' /etc/hosts
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值