grep 命令:文本搜索
侧边栏壁纸
  • 累计撰写 64 篇文章
  • 累计收到 1 条评论

grep 命令:文本搜索

soulio
2024-09-17 / 0 评论 / 3 阅读 / 正在检测是否收录...

一、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 作为搜索文件

本文共 533 个字数,平均阅读时长 ≈ 2分钟
0

海报

正在生成.....

评论 (0)

取消