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

简介

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. PHP递归的简单理解

    递归简单来说就是自己调用自己 比如说 A向B问路 但是B不知道 于是乎B问C 但是C不知道 于是乎问D D知道 D把怎么走告诉C C在把怎么走告诉B B再把怎么走告诉A A虽然是最先问的 但是是最后一 ...

  2. Ubuntu解决无法远程连接

    检查SSH是否安装 ssh localhost 如果没有安装,通过APT的命令安装 sudo apt install openssh-server 无法连接Ubuntu中的root用户 其他用户可以连 ...

  3. mac安装mysql5.6默认密码修改

    前言: 每次安装mysql都被烦的要死,痛并思痛记下此篇文章: 参考: https://blog.csdn.net/u010377383/article/details/82688250 https: ...

  4. 使用.pem密钥文件登录服务器

    一.使用puttygen工具将.pem文件转成.ppk文件 Load时,需注意选择文件类型为All Files 二.使用secureCRT工具登录 点击properties...按钮,上传ppk文件, ...

  5. “你帮我助”软件开发(Final)

    本项目是上海交通大学 CS-3331 软件工程课程大作业. 作业描述 "你帮我助"软件开发(Final) 新的功能需求: 物品有公共的信息(物品名称,物品说明,物品所在地址,联系人 ...

  6. 对使用网站模板编写自己的jsp页面的收获

    收获与问题 先感叹一句模板的强大,模板只要按照我的上一篇博客的步骤进行修改,我们就能拥有一个自己写好看许多的界面了. 我目前套用模板还不是很熟练,套用的速度还需要加快,不过目前的我,已经掌握了基本要领 ...

  7. EF Core如何使用DbFirst

    首先安装好 Microsoft.EntityFrameworkCore.SqlServer   [ef 的数据库驱动程序 如果是其他数据库这个要换成对应的数据库驱动] Microsoft.Entity ...

  8. 谷歌浏览器配置Selenium,并配合python使用

    python环境准备 python 需要安装selenium ,这个直接pip安装即可 pip install selenium -i http://pypi.douban.com/simple -- ...

  9. CAS 单点登录系统

    一.什么是单点登录 单点登录(Sign Sion On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系 ...

  10. MyBatis 重点知识归纳

    一.MyBatis 简介 [1]MyBatis 是支持定制化 SQL,存储过程以及高级映射的优秀持久化框架.[2]MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取查询结果集.[3 ...