Linux 中的 Grep 命令(搜索文件中的文本)

2023-11-10

Grep 是一个强大的文本搜索工具,Grep 的意思是“全局正则表达式打印”。基本上,Grep 在文本文件中搜索指定的正则表达式,并将包含匹配项的任何行输出到标准输出。因此Grep命令可用于在一个或多个文本文件中搜索某种文本、单词、模式或句子。

  • 建议阅读:12 个很棒的 Linux Find 命令示例

在本教程中,我们将通过一些实际示例向您展示如何使用 Grep 命令。

先决条件

  • 运行Linux操作系统的系统。
  • 访问终端/命令行。

搜索文件中的特定字符串

  • To search for a string tecadmin in the file file1.txt, run the following command:
    
    grep tecadmin file1.txt
      

    此命令将打印包含单词 tecadmin 的所有行:

    
    tecadmin is a popular linux blog
    i love tecadmin
    tecadminlinux
      
  • To search for an exact string tecadmin in the file file1.txt, run the following command:
    
    grep -w tecadmin file1.txt
      

    此命令将打印包含整个单词 tecadmin 的所有行:

    
    tecadmin is a popular linux blog
    i love tecadmin
      
  • To search for a string tecadmin case insensitively in the file file1.txt, run the following command:
    
    grep -i tecadmin file1.txt
      

    此命令将打印包含单词 tecadmin 的所有行,不区分大小写:

    
    tecadmin is a popular linux blog
    i love tecadmin
    tecadminlinux
    Tecadmin is my favourite blog
    This is Tecadmin website
      

在多个文件中搜索特定字符串

  • To search for a string linux in file file1.txt and file2.txt, run the following command:
    
    grep -i linux file1.txt file2.txt
      

    此命令将打印 file1.txt 和 file2.txt 中包含单词 linux 的所有行:

    
    file1.txt:tecadmin is a popular linux blog
    file1.txt:tecadminlinux
    file2.txt:Linux is an open-source operating system.
    file2.txt:linux is made by linus torvalds.
    file2.txt:linux is most popular operating system.
      
  • To search for a string linux in all files in the current directory and sub-directories, run the following command:
    
    grep -r linux *
      

    此命令将打印当前目录和子目录中所有文件中包含单词 linux 的所有行:

    
    file1.txt:tecadmin is a popular linux blog
    file1.txt:tecadminlinux
    file2.txt:linux is made by linus torvalds.
    file2.txt:linux is most popular operating system.
    file3.txt:linux vs windows
    file3.txt:Ubuntu is a linux operating system
      

逆向 Grep 搜索

您可以使用带 -v 选项的 grep 命令来打印与特定字符模式不匹配的所有行。

例如,打印file1.txt和file2.txt中不包含字符串linux的所有行,运行以下命令:


grep -v linux file1.txt file2.txt
  

此命令将排除包含字符串 linux 的所有行:


file1.txt:i love tecadmin
file1.txt:Tecadmin is my favourite blog
file1.txt:This is Tecadmin website
file2.txt:Linux is an open-source operating system.
  

列出与特定模式匹配的文件名

您可以使用 -l 选项仅显示包含特定字符串的文件名。

例如,列出当前目录中与字符串 tecadmin 匹配的所有文件名,运行以下命令:


grep -l tecadmin *
  

您应该看到以下输出:


file1.txt
  

显示匹配数

您可以使用带 -c 选项的 grep 来显示行数与给定字符串匹配的所有文件。

例如,要显示当前目录中与字符串 linux 匹配的行数的所有文件,请运行以下命令:


grep -c linux *
  

您应该看到以下输出:


file1.txt:2
file2.txt:2
file3.txt:2
  

显示具有匹配模式的行号

您可以使用带 -n 选项的 grep 来打印具有匹配模式的行号。

例如,要显示当前目录中与模式 linux 匹配的行号,请运行以下命令:


grep -n linux * 
  

您应该看到以下输出:


file1.txt:1:tecadmin is a popular linux blog
file1.txt:3:tecadminlinux
file2.txt:2:linux is made by linus torvalds.
file2.txt:3:linux is most popular operating system.
file3.txt:1:linux vs windows
file3.txt:2:Ubuntu is a linux operating system
  

您还可以使用 grep 命令的选项 c 和 n 在匹配字符串的前后显示一行。

例如,显示file4.txt中匹配字符串linux前后各一行,运行以下命令:


grep -n -C 1 linux file4.txt
  

您应该看到以下输出:


1-Hi, i am tecadmin user
2:i am linux operating system
3-i am windows operating system
  

仅显示匹配模式

默认情况下,grep 命令打印与模式匹配的整行。

您可以使用 -o 选项仅打印匹配的模式。

例如,使用以下命令搜索与字符串/模式 linux 匹配的 file1.txt:


grep -o linux file1.txt 
  

您应该看到以下输出:


linux
linux
  

结论

在上面的教程中,您学习了如何使用 grep 命令在文件中搜索特定字符串。我希望您现在对 grep 命令以及它如何在各种情况下使用有足够的了解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 Grep 命令(搜索文件中的文本) 的相关文章

  • Windows 中是否有类似 GREP 的模式匹配实用程序?

    有没有类似的实用工具grep可从 Windows 命令提示符获取 或者是否有第三方工具 有一个命令行工具叫做FINDSTR随所有 Windows NT 级操作系统一起提供 类型FINDSTR 进入命令提示符窗口以获取更多信息 它并不支持所有
  • 打印一个文件中与另一文件中的模式匹配的行

    我有一个超过 40 000 行的文件 file1 我想提取与 file2 中的模式匹配的行 大约 6000 行 我像这样使用 grep 但它很慢 grep f file2 file1 gt out 有没有更快的方法来使用awk or sed
  • 正则表达式 [A-Za-z] 似乎不包含字母 W 和 w

    由于某种原因 我不知道为什么 也许我的系统或我的大脑有些不对劲 正则表达式 A Z 似乎无法识别字母 W 和 a z 似乎不认识字母 w 例子 for x in A a B b C c D d E e F f G g H h I i J j
  • 如何从字符串列表文件中 grep 精确匹配

    我有一个文件 A 其中有一列 其中包含如下字符串列表 ADAMTS9 AIP 我想使用文件 A 中的字符串来 grep 文件 B 中包含它们的行 文件 B 如下所示 chr13 50571142 50592603 ADAMTS9 21461
  • 输出文件名,不是带有选择字符串的字符串

    我正在使用 powershell 来 grep 特定字符串的源代码 如果字符串在文件中 我想要文件的名称 而不是包含该字符串的代码行 我还想要文件名 仅一次 而不是与文件存在的次数一样多地列出 我目前正在使用 gci include sql
  • sh 和 bash 中 pgrep 的区别

    这是一个测试 bash c pgrep f novalidname sh c pgrep f novalidname 11202 Why is pgrep运行时给出输出sh 据我所知 我的计算机上没有名为novalidname 这可能是一个
  • 如何使用grep提取子字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 从字符串中提取正则表达式结果并将其写入变量 https stackoverflow com questions 3148558 extract regexp result from string an
  • 如何在unix中查找字符串之间包含多个空格的行?

    我有像这样的行 1 Harry says hi 2 Ron says bye 3 Her mi oh ne is silent 4 The above sentence is weird 我需要一个 grep 命令来检测第三行 这就是我正在
  • 如何 grep grep 返回的文件内容?

    当我使用以下命令查找带有错误消息的日志文件时grep error log 它返回日志文件列表 grep error log Binary file out0080 2011 01 07 12 38 log matches Binary fi
  • 在“grep”结果中包含标头

    有没有一种方法可以将 head 1 和 grep 命令组合成一个目录中的所有文件 并将输出重定向到输出文件 我可以使用 sed 来完成此操作 但它似乎不如 grep 快 sed n 1p 6330162 p infile txt gt ou
  • Linux 文件权限的正则表达式(数字表示法)

    我一生都无法找出正确的正则表达式 我正在寻找的是一个正则表达式来匹配 Linux 文件权限的有效数字表示 例如 740 表示全部读取无 777 表示全部全部 到目前为止 我已经尝试过以下操作 strtotest 740 echo strto
  • 将文件列表传递给 grep

    我有一个文件中的文件列表 该列表很大 并且文件名是非标准的 这意味着 有些文件名包含空格 非 ascii 字符 引号 单引号 所以 通过那个huge不能选择将文件列表作为 grep 参数 因为我不确定我不会超过linux允许的参数长度 我想
  • 使用 grep 仅打印上下文

    Using grep http www computerhope com unix ugrep htm 您可以打印与您的搜索查询匹配的行 添加一个 C选项将打印两行周围的上下文 如下所示 gt grep C 2 lorem some con
  • 使用 grep 查找两个字符之间的字符串

    我发现了这一点answer https stackoverflow com a 1454936 2068595用于查找两个字符之间的字符串的正则表达式 就我而言 我想找到之间的每一个模式 and 这是正则表达式 lt 确实 当我尝试它时它有
  • 当我通过 shell 脚本创建 .txt 文件时,为什么文件名末尾出现问号? [复制]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 我应该在其中创建 1 个文本文件 当我这样做时 文件名末尾出现一个问号 是什么原因 我正在 bash 脚本中尝试以下方法 1 grep ERROR a1 gt text txt
  • grep 模式单引号和双引号

    封装和封装有什么区别grep单引号和双引号中的模式 grep abc file txt and grep abc file txt 我之所以这么问 是因为我无法自己测试所有可能的情况 而且我不想陷入错误的情况 如果你有特殊字符 我会看到不同
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • grep 的贪婪行为

    我认为在正则表达式中 贪婪 适用于量词而不是整个匹配 然而 我观察到 grep E color auto a ab lt printf aab returns aab而不是aab 这同样适用于 sed 另一方面 在 pcregrep 和其他
  • 如何在文件夹中的 xml 文件中 grep 一个单词

    我知道我可以使用 grep 在这样的文件夹中的所有文件中查找单词 grep rn core 但我当前的目录有很多子目录 我只想搜索当前目录及其所有子目录中存在的所有 xml 文件 我怎样才能做到这一点 我试过这个 grep rn core
  • 使用 grep 查找所有匹配的模式

    In txt1 S01A1P2 S01A1P5 S01A1P4 In txt2 data train wave S01A1P3 mfc data train wave S01A1P7 mfc data train wave S01A1P8

随机推荐

  • C语言——简单的程序设计

    目录 前言 一 顺序结构程序 1 顺序程序结构介绍 2 顺序程序举例 二 选择结构程序 1 选择结构程序介绍 2 if语句的三种形式 1 第一种形式的if语句 2 第二种形式的if语句 3 第三种形式的if语句 3 switch语句 三 循
  • ARP协议

    一 ARP概述 如果要在TCP IP协议栈中选择一个 最不安全的协议 那我会毫不犹豫把票投给ARP协议 我们经常听到的这些术语 包括 网络扫描 内网渗透 中间人拦截 局域网流控 流量欺骗 基本都跟ARP脱不了干系 大量的安全工具 例如大名鼎
  • 5.2 分布式 Git - 向一个项目贡献

    5 2 分布式 Git 向一个项目贡献 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 27 初稿 目录 文章目录 5 2 分布式 Git 向一个项目贡献 版本说明 目录 向一个项目贡献 1 提交准则 Figure 57
  • 【数模】数据统计与分析中的随机数

    matlab里关于随机数的用法 随机数 matlab里关于随机数的用法 一 简单随机数 1 rand 生成 0 1 区间上均匀分布的随机变量 2 randn 生成服从标准正态分布 均值为 0 方差为 1 的随机数 二 较复杂随机数 需安装了
  • 【UnityShader自学日志】线框自发光着色器

    1 新建一个无光照着色器 Unlit Shader 重命名为 Unlit wire 2 修改其代码如下 Shader PACKT unlit wireframe1 Properties 线框着色器所需要的三个属性 Color Color C
  • Maven项目pom.xml配置文件中packaging标签的使用

    一 packaging标签可设置的值 指定打包类型使用标签 它默认是 jar 类型 1 pom 父类型都为pom类型 多用于微服务项目
  • IMU背包对动物行为影响测试

    动物行为是一种可观察和可测量的指标 轻量化和低成本的传感器技术的先进发展为研究人员提供了以最小干预来跨越空间和时间跟踪动物的机会 特别是对于家禽业来说 已经从传统的笼养系统转变为无笼养系统 许多技术可用于检测大群鸡的行为 活动和位置 为了有
  • 免费在线的redmine项目演示,提供免费三级域名

    免费在线的redmine项目演示 提供免费三级域名 提供在线的redmine最新版本的免费使用环境 支持免费的三级域名 申请地址 http m redmine org hostings new 申请成功之后 你的账户具有完整的redmine
  • Visual studio一个项目中多个源文件的单独调试运行

    问题描述 最近刷编程题 想在VS中一个项目中刷所有题目 但VS中一次只能一个包含main的源文件参与生成 不想为每个题目新建项目 很麻烦 解决方案 将其他不需要参加生成的包含main的源文件右键属性 从生成中排除 选 是 操作成功后 不需要
  • 编译原理-词法分析实验

    主要想保存一下实验代码 1 待分析的简单语言的词法 1 关键字 begin if then while do end 所有关键字都小写 2 运算符和界符 3 标识符 ID 整数型常数 NUM 通过正规式定义 4 空格 2 各个单词符号对应的
  • Fastjson 1.2.47反序列化漏洞复现

    目录 一 前期准备 二 fastjson简介 三 漏洞复现 一 创建文件 三 漏洞复现 二 反弹shell 一 前期准备 1 安装jdk 并配置环境 Kali安装JDK 1 8的详细过程 m0 54899775的博客 CSDN博客 2 安装
  • ZigZagPattern之字形图案算法的Java实现

    ZigZagPattern之字形图案算法的Java实现 ZigZagPattern 之字形图案 是一种常见的图案 其特点是呈蛇形排列 在这篇文章中 我们将介绍如何使用Java语言实现这个算法 并展示相应的源代码 首先 让我们来了解一下Zig
  • MySQL 连接池:增强性能的实际示例和策略

    数据库连接是任何应用程序的重要组成部分 因为它们促进应用程序和数据库之间的通信 然而 创建和管理连接可能会占用大量资源且耗时 特别是对于高流量应用程序 连接池是一种有效的技术 可以通过在多个客户端之间重用和共享数据库连接池来缓解这些挑战 通
  • 如何在 Linux Mint 上安装 NRPE 客户端

    NRPE Nagios 远程插件执行器 是一个允许您在远程 Linux 或 Unix 服务器上远程执行 Nagios 插件的工具 它使您能够监控远程主机的资源 例如 CPU 使用率 磁盘空间和其他性能指标 并将结果报告给中央 Nagios
  • CentOS 8 – 初始服务器设置

    使用本教程首次配置您的 CentOS 8 Linux 计算机 例如 您使用 CentOS 8 启动了新的 VPS 或专用主机 请按照以下步骤完成 CentOS 8 的初始服务器设置 第 1 步 登录 CentOS 8 登录到您的 CentO
  • 使用带有自动重启功能的 CRON 监控 Systemd 服务

    持续的服务可用性对于 Linux 系统的顺利运行至关重要 必须有一种机制可以检测服务何时关闭并自动重新启动它以最大限度地减少停机时间 在本文中 我们将讨论如何使用 cron 作业来监控服务状态并在服务关闭时自动重新启动服务 此外 我们还将介
  • 如何使用 JavaScript 检查复选框是否被选中

    本教程将帮助您使用 jQuery 编写 JavaScript 代码 该代码检查复选框是否已选中 并据此执行操作 这在提交任何表单之前检查是否选中任何复选框很有用 JavaScript 代码 下面是检查复选框 id checkBox1 是否被
  • Bash Case 语句语法和示例

    CASE 语句是 Bash 中强大的条件语句 允许您根据值列表测试变量 它是使用多个 if then 语句的更简洁 更有效的替代方案 很多时候它是一个很好的替代品if else 语句 您还可以使用它来处理命令行参数在 shell 脚本中 在
  • 在 MacOS 中设置环境变量

    环境变量是在本地计算机 运行程序的计算机 上存储值的一种方式 例如 您可以存储用于登录系统的用户 ID 您还可以使用环境变量来存储配置设置 例如数据库连接的名称 设置环境变量时 考虑安全影响非常重要 如果攻击者能够访问您的环境变量 他们就可
  • Linux 中的 Grep 命令(搜索文件中的文本)

    Grep 是一个强大的文本搜索工具 Grep 的意思是 全局正则表达式打印 基本上 Grep 在文本文件中搜索指定的正则表达式 并将包含匹配项的任何行输出到标准输出 因此Grep命令可用于在一个或多个文本文件中搜索某种文本 单词 模式或句子