当前位置: 首页 > article >正文

grep 命令:文本搜索

一、grep 命令简介

grep ​命令用于在文件中搜索指定模式的文本,并显示匹配的行。

二、grep 命令参数

匹配规则:可以是 普通字符 ​串或 正则表达式​。

grep [选项] [匹配规则] [指定目录]

常用选项:

  1. -i, --ignore-case​:忽略大小写。
  2. -v, --invert-match​:仅显示不匹配的行。
  3. -c, --count​:仅显示匹配行的计数,而不显示匹配的内容。
  4. -n, --line-number​:显示匹配行的行号。
  5. -l, --files-with-matches​:仅显示包含匹配内容的文件名。
  6. -L, --files-without-match​:仅显示不包含匹配内容的文件名。
  7. -r, --recursive​:递归地搜索目录中的文件。
  8. -w, --word-regexp​:仅匹配整个单词,而不是部分匹配。
  9. -E, --extended-regexp​:使用扩展的正则表达式语法。不支持 \d ​等快捷写法。
  10. -o, --only-matching​:仅显示匹配的部分,而不是整行。
  11. -A NUM, --after-context=NUM​:显示匹配行后的 NUM 行内容。
  12. -B NUM, --before-context=NUM​:显示匹配行前的 NUM 行内容。
  13. -C NUM, --context=NUM​:显示匹配行前后各 NUM 行内容。
  14. -q, --quiet, --silent​:静默模式,不显示任何输出。
  15. -P, --perl-regexp​:使用 Perl 正则表达式语法。支持 \d ​等快捷写法,比 -E ​参数实用。

三、grep 命令示例

示例 1 从一个命令的输出中搜索信息:

Clip_2024-09-17_15-27-19

示例 2 在文件中搜索包含特定字符串的行:

grep "关键词/匹配规则" filename

Clip_2024-09-17_15-43-51

示例 3 忽略大小写搜索:

grep -i "关键词/匹配规则" filename

示例 4 显示匹配行的行号:

grep -n "关键词/匹配规则" filename

示例 5 递归搜索目录下的所有文件:

grep -r "关键词/匹配规则" directory

当前目录


grep -r "拼命加载"

# 输出
../Joe/live.php:              <li class="error">正在拼命加载中...</li>
../Joe/video.php:              <p class="error">正在拼命加载中...</p>
../Joe/video.php:              <li class="error">正在拼命加载中...</li>
../Joe/wallpaper.php:            <li class="error">正在拼命加载中...</li>

示例 6 显示不匹配的行:

grep -v "关键词/匹配规则" filename

示例 7 显示匹配行的计数:

grep -c "关键词/匹配规则" filename

示例 8 只显示包含匹配的文件名:

grep -l "关键词/匹配规则" *

示例 9 grep 嵌套

这里 timedatectl show​ ​输出的内容非常多,而我只想看日期,可以嵌套使用 grep​ ​提取日期值。

# 命令
timedatectl show
# 输出
Timezone=Etc/UTC
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Tue 2024-09-17 09:01:41 UTC
RTCTimeUSec=Tue 2024-09-17 09:01:41 UTC

grep

# 命令
timedatectl show | grep  "^TimeUSec" | grep -Po "\d{4}-\d{2}-\d{2}"
# 输出
2024-09-17

思考

仅有两个文件,内容一样

Clip_2024-09-17_17-51-00

搜索

Clip_2024-09-17_17-51-38

​​

第一个 ls​ 搜索不到:可将 ls 输出看作临时文件 tmp,tmp 作为搜索内容

第二个 ls​ 搜索成功:hello.c 和 hello_world.c 作为搜索文件


http://www.kler.cn/news/308491.html

相关文章:

  • 无畏契约 (Valorant)YOLO 模型数据集
  • 在Unity UI中实现UILineRenderer组件绘制线条
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
  • 仓储管理系统的设计与实现SSM框架
  • python数据分析 pandas库-数据的读取和保存
  • 【Linux 从基础到进阶】KVM虚拟化配置与管理
  • unity3d入门教程四
  • SprinBoot+Vue宠物寄养系统的设计与实现
  • PCL 曲线点云提取
  • Qt常用控件——QTextEdit
  • FPGA编程指南: CSU DMA传输
  • el-table表格的展开行,初始化的时候展开哪一行+设置点击行可展开功能
  • Python爬虫之bs4模块用法
  • 如何用python做一个计算器
  • 基于AlexNet实现猫狗大战
  • 轻松上手Cursor,体验丝滑编程
  • springschedule定时任务
  • What is new in C# 7,8,9,10
  • 牛客周赛 Round 60(A,B,C,D,E,F)
  • 构建“零工市场小程序”,服务灵活就业“大民生”
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)
  • com.microsoft.sqlserver:sqljdbc4:jar:4.0 was not found产生原因及解决步骤
  • 电商店群模式如何利用云分账实现自动化资金管理
  • 闲云野记:24915
  • 技术上,如何复现 o1?
  • 易于理解和实现的Python代码示例
  • 数据中心服务器与存储运维的深度实践与挑战
  • 部署自己的对话大模型,使用Ollama + Qwen2 +FastGPT 实现
  • ThinkCMF框架任意内容包含漏洞的讲解
  • 简化登录流程,助力应用建立用户体系