[本文出自天外归云的博客园]

简介

Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。

选项

以下是 grep 的所有选项:

grep [options] [pattern] [files]
  • -a, --text: 将二进制文件作为文本文件处理。
  • -c, --count: 显示匹配行数,而不是行本身。
  • -e pattern, --regexp=pattern: 查找指定的模式,支持多个模式。
  • -f file, --file=file: 从文件中读取模式,每个模式占一行。
  • -i, --ignore-case: 忽略大小写。
  • -l, --files-with-matches: 只打印文件名,而不是行本身。
  • -n, --line-number: 在每行的前面打印行号。
  • -r, --recursive: 遍历子目录中的文件。
  • -v, --invert-match: 输出不匹配的行。
  • -x, --line-regexp: 仅匹配整行。
  • -w, --word-regexp: 仅匹配整个单词。

pattern 通常是一个正则表达式,用于匹配指定的文本模式。

files 可以是若干个文件,也可以是目录。

以上是 grep 命令的所有选项,更多信息可以使用 man grep 在终端中查看。

常用grep选项举例

下面是常用的grep选项及其举例:

  1. 搜索指定字符串

可以使用grep搜索包含指定字符串的文件或文件夹,例如:

grep "hello" file.txt
grep "hello" folder/file.txt
  1. 搜索多个字符串

使用-E选项可以在同一行中搜索多个字符串。

grep -E "hello|world" file.txt
  1. 忽略大小写

使用-i选项可以忽略大小写的差异。

grep -i "hello" file.txt
  1. 输出行号

使用-n选项可以输出匹配字符串所在行的行号。

grep -n "hello" file.txt
  1. 反向搜索

使用-v选项可以输出不包含指定字符串的行。

grep -v "hello" file.txt
  1. 搜索某个范围内的行

使用 -A, -B, 或-C选项搜索特定范围内的行。

grep -A 2 "hello" file.txt  #输出包含“hello”的行以及后两行。
grep -B 2 "hello" file.txt #输出包含“hello”的行以及前两行。
grep -C 2 "hello" file.txt #输出包含“hello”的行以及前后两行。
  1. 搜索整个单词

使用-w选项可以搜索指定单词作为整个单词匹配。

grep -w "hello" file.txt
  1. 统计匹配次数

使用-c选项可以统计匹配字符串的个数。

grep -c "hello" file.txt
  1. 搜索指定文件类型

使用通配符可以搜索特定类型的文件或使用 --include选项来仅搜索指定文件类型。

grep "hello" *.txt
grep "hello" --include "*.txt" folder/
  1. 搜索子目录

使用-r或-R选项可以搜索子目录的文件。

grep -r "hello" folder/
grep -R "hello" folder/
  1. 不忽略二进制文件

使用-a选项可以强制grep搜索二进制文件。

grep -a "hello" binary_file.bin
  1. 搜索时忽略特定目录

使用 --exclude-dir选项来忽略特定目录的搜索。

grep -r "hello" folder/ --exclude-dir=log/
  1. 搜索特定行数

使用 -m 选项指定只搜索文件中的前几行。

grep -m 10 'hello' file.txt # 只搜索文件中的前10行
  1. 输出匹配字符串前后的内容

使用 -o 选项仅输出匹配字符串,而 -A 和 -B 选项可以输出字符串前后的内容。

grep -o 'hello' file.txt # 只输出匹配到的 'hello' 字符串,而不包含它前后的内容
grep -A 3 'hello' file.txt # 输出包含 'hello' 字符串的行以及后三行
grep -B 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前两行
  1. 显示不匹配行

使用 -L 选项输出不匹配指定字符串的行。

grep -L 'hello' file.txt # 输出不匹配 'hello' 字符串的行
  1. 显示匹配行前几行和后几行的内容

使用 -C 选项,可以同时输出匹配字符串前后几行的内容。

grep -C 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前后两行内容
  1. 搜索多个文件

可以一次性搜索多个文件。

grep 'hello' file1.txt file2.txt file3.txt # 搜索 file1.txt, file2.txt, file3.txt 文件中的 'hello' 字符串
  1. 搜索时忽略空白字符

使用 -w 选项,可以忽略匹配字符串前后的空格、制表符等空白字符。

grep -w 'hello' file.txt # 忽略匹配字符串前后的空格、制表符等空白字符
  1. 搜索时查看匹配字符串的上文或下文

使用 -B 和 -A 选项,可查看匹配字符串上下文的内容。

grep -B 2 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串前2行
grep -A 3 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串后3行

以上就是grep的所有功能举例。

Linux grep命令详细教程的更多相关文章

  1. 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列

     http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...

  2. linux grep命令总结

    风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园    首页    新随笔    联系    订阅    管理 posts - 791,  comments - 394,  trackba ...

  3. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  4. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  5. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  6. linux grep命令(linux在文件中搜索内容)

    转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...

  7. 最详细的 linux grep命令教程

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  8. Linux中find、grep命令详细用法

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...

  9. Linux find、grep命令详细用法

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:find命令 find命令的一般形式 ...

  10. Linux Tar 命令简明教程

    Tar 命令经常用但是它的各种参数又总是记不住,因此彻底梳理了一下,再也不会忘记. Tar 是 Linux 中的(压缩)归档工具. 归档的意思与打包相同,就是把文件或目录或者多个文件和目录打包为一个文 ...

随机推荐

  1. 定制centos发行版

    //轻量级Centos定制发行版==================================================================================== ...

  2. 关于proTable设置列固定,始终没有固定的效果的原因

    使用proTable设置操作列固定 const columns: ProColumns<IssueItem>[] = [ { title: '操作', valueType: 'option ...

  3. LaTeX in 24 Hours - 3. Formatting Texts I

    文章目录 本章内容:文本格式 I 3.1 Sectional Units 3.2 Labeling and Referring Numbered Items 3.3 Texts Alignment 3 ...

  4. SHELL-反弹shell

    什么是shell? 在我们深入了解发送和接收 shell 的复杂性之前,了解 shell 实际上是什么很重要.用最简单的术语来说,shell 就是我们在与命令行环境 (CLI) 交互时使用的工具.换句 ...

  5. 谁会拒绝一个开源的 3D 博客呢?

    说到博客大家一定都不陌生,不管你是深耕职场多年的老鸟,还是在学校努力学习的小鸟,应该都有过一段"装扮"博客的经历,比如:放上喜欢的图片.添加炫酷的交互.换上 DIY 的博客主题等等 ...

  6. diyudio 3886 功放机鉴赏

  7. Vue 路由导航守卫

    Vue 路由导航守卫 一:全局守卫 (1) router.beforeEach beforeEach((to, from, next) => {}) 接收三个参数,在路由切换成功之前调用 to ...

  8. Django笔记十四之统计总数、最新纪录和空值判断等功能

    本篇笔记将介绍一些 Django 查询中统计总数.最新纪录和空值判断等功能. count in_bulk latest.earliest first.last exists contains.icon ...

  9. 在Kubernetes上安装Netdata的方法

    介绍 Netdata可用于监视kubernetes集群并显示有关集群的信息,包括节点内存使用率.CPU.网络等,简单的说,Netdata仪表板可让您全面了解Kubernetes集群,包括在每个节点上运 ...

  10. KubeSphere 高可用集群搭建并启用所有插件

    介绍 大多数情况下,单主节点集群大致足以供开发和测试环境使用.但是,对于生产环境,您需要考虑集群的高可用性.如果关键组件(例如 kube-apiserver.kube-scheduler 和 kube ...