【Linux命令详解

2023-11-13

在这里插入图片描述



简介

在Linux系统中,grep命令是一款功能强大且常用的文本搜索工具。它允许用户在文件中查找指定模式的文本,并将匹配的行显示出来,或者将匹配的文本提取出来。本节我们将深入探讨grep命令的使用方法和相关知识点。

一,参数列表

下表列出了grep命令的常用参数及其功能:

参数 功能
-i 忽略匹配时的大小写
-v 反向匹配,显示不包含指定模式的行
-r/-R 递归地在目录中搜索文件
-l 只显示包含匹配模式的文件名
-n 显示匹配行的行号
-C<行数> 显示匹配行的上下文行数
-E 启用扩展正则表达式
-F 将模式视为固定字符串而非正则表达式
–color 在匹配文本上使用颜色高亮显示

二,使用介绍

1. 使用基本模式搜索

知识点

在Ubuntu系统中使用grep命令进行基本模式的文本搜索是一个重要的技能。首先,让我们尝试在一个文件中搜索特定的关键词。

$ grep "关键词" 文件名

执行上述命令后,grep会在指定的文件中查找包含"关键词"的所有行,并将其显示出来。这对于快速定位特定信息非常有用。

示例

假设我们有一个名为"example.txt"的文件,其中包含以下内容:

这是一行文本,包含关键词。
这行没有匹配。
关键词出现在这一行。

我们可以使用以下命令来搜索包含"关键词"的行:

$ grep "关键词" example.txt

执行结果:

这是一行文本,包含关键词。
关键词出现在这一行。

2. 忽略大小写匹配

知识点

在编程中,文本搜索时通常希望忽略字符的大小写。grep命令提供了-i参数,可以在搜索时忽略大小写。

$ grep -i "关键词" 文件名

这将会搜索并显示出所有与"关键词"相匹配的行,无论其大小写形式。

示例

我们仍使用前面的"example.txt"文件。现在,我们将使用-i参数来搜索不同大小写形式的"关键词"。

$ grep -i "关键词" example.txt

执行结果:

这是一行文本,包含关键词。
关键词出现在这一行。

3. 反向匹配

知识点

有时候,我们希望查找不包含特定模式的行。-v参数可以让grep命令执行反向匹配,即显示不包含指定模式的行。

$ grep -v "关键词" 文件名

这会在文件中查找并显示不包含"关键词"的所有行。

示例

假设我们继续使用"example.txt"文件,我们现在将使用-v参数来查找不包含"关键词"的行。

$ grep -v "关键词" example.txt

执行结果:

这行没有匹配。

4. 递归搜索目录

知识点

有时候,我们需要在一个目录及其子目录下进行文本搜索。-r-R参数可以让grep命令递归搜索目录。

$ grep -r "关键词" 目录名

这将会在指定的目录及其子目录下搜索并显示包含"关键词"的行。

示例

假设我们有一个目录"my_directory",其中包含多个文件,我们想要在这个目录及其子目录下搜索"关键词"。

$ grep -r "关键词" my_directory

执行结果:
(执行结果展示各个文件中包含"关键词"的行)

…(此处省略部分执行结果)

5. 显示文件名

知识点

有时候,我们仅对包含指定模式的文件名感兴趣,而不是文件中的具体内容。使用-l参数可以只显示包含匹配模式的文件名。

$ grep -l "关键词" 文件名

这会列出所有包含"关键词"的文件名。

示例

继续使用"example.txt"文件,我们使用-l参数来查找包含"关键词"的文件名。

$ grep -l "关键词" example.txt

执行结果:

example.txt

6. 显示行号

知识点

在文本搜索过程中,有时候我们希望知道匹配行在文件中的行号。-n参数可以让grep命令显示匹配行的行号。

$ grep -n "关键词" 文件名

这会在显示匹配行时同时显示其行号。

示例

继续使用"example.txt"文件,我们使用-n参数来查找包含"关键词"的行并显示行号。

$ grep -n "关键词"

 example.txt

执行结果:

1:这是一行文本,包含关键词。
3:关键词出现在这一行。

7. 显示上下文行

知识点

有时候,我们不仅想要查看匹配行本身,还希望查看匹配行的上下文内容。使用-C<行数>参数可以让grep命令显示匹配行的上下文行数。

$ grep -C<行数> "关键词" 文件名

这将显示包含匹配行的前后指定行数的文本内容。

示例

继续使用"example.txt"文件,我们使用-C2参数来查找包含"关键词"的行并显示前后2行内容。

$ grep -C2 "关键词" example.txt

执行结果:

这是一行文本,包含关键词。
这行没有匹配。
关键词出现在这一行。

8. 启用扩展正则表达式

知识点

正则表达式是在文本处理中非常有用的工具,它可以实现更复杂的模式匹配。使用-E参数可以让grep命令启用扩展正则表达式的功能。

$ grep -E "正则表达式" 文件名

这将会在搜索时使用扩展的正则表达式语法。

示例

继续使用"example.txt"文件,我们使用-E参数来查找包含特定模式的行。

$ grep -E "[0-9]+" example.txt

执行结果:
(此处展示匹配到的行)

9. 将模式视为固定字符串

知识点

在某些情况下,我们希望将搜索模式视为普通的字符串,而不是正则表达式。使用-F参数可以让grep命令将模式视为固定字符串。

$ grep -F "字符串" 文件名

这将会在搜索时将模式视为普通字符串,而非正则表达式。

示例

继续使用"example.txt"文件,我们使用-F参数来查找包含特定字符串的行。

$ grep -F "关键词" example.txt

执行结果:
(此处展示匹配到的行)

10. 使用颜色高亮显示匹配文本

知识点

在终端中进行文本搜索时,为了更清晰地显示匹配文本,我们可以启用颜色高亮显示。使用--color参数可以让grep命令将匹配的文本以颜色高亮显示。

$ grep --color "关键词" 文件名

这将会使匹配的文本在终端中以颜色高亮显示。

示例

继续使用"example.txt"文件,我们使用--color参数来查找并高亮显示匹配的文本。

$ grep --color "关键词" example.txt

总结

通过本教程,我们详细了解了grep命令在Ubuntu系统中的使用方法及其各种参数。grep命令在文本处理中是一个强大且常用的工具,可以帮助我们快速定位和处理特定模式的文本。从基本的模式搜索到高级的正则表达式匹配,grep为我们提供了丰富的功能,为编程和系统管理工作提供了很大的便利。

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

【Linux命令详解 的相关文章

  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • 打印 STDOUT/STDERR 并将它们写入 Bash 中的文件?

    有没有办法让 Bash 将 STDOUT STDERR 重定向到文件 但仍然将它们打印到终端 这会将 STDOUT 和 STDERR 重定向到同一个文件 some command 2 gt 1 tee file log Example to
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • Linux Shellcode“你好,世界!”

    我有以下可用的 NASM 代码 global start section text start mov eax 0x4 mov ebx 0x1 mov ecx message mov edx 0xF int 0x80 mov eax 0x1
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • VSCODE 在 Linux 上不适用于我

    刚刚了解 VSCODE 很高兴尝试一下 我下载 解压并运行可执行文件 我得到 Code 2183 0429 201254 ERROR browser main loop cc 170 Running without the SUID san
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径

随机推荐

  • 如何提取视频的m3u8地址

    1 用360浏览器或者其他Chrome内核浏览器打开优酷网页 2 在播放页面按F12打开审核模式 3 点击如图图标模拟移动设备 4 设置模拟的设备 5 按F5刷新即可进入手机版网页 6 点击Network 7 点击Media 8 点击播放按
  • 2017年蓝桥杯B组C/C++省赛-分巧克力

    题目 题目链接 题解 二分 想到二分比实现二分要难点 可行解部分可以与不可行解部分完美地分隔开来 绿色部分是分成的巧克力比较小时都可以满足 而大于一定程度的时候就不可行了 所以可以将其抽象成小于可行 大于不可行的二分问题 在判断时 遍历全部
  • JAVA的分支结构

    分支结构 基本概述 当需要进行条件判断的时候 并且根据条件是否成立来执行某一段代码的时候 需要分支结构 1 if结构 if 布尔表达式 语句块 如果布尔表达式为true将执行的语句 如果布尔表达式的值为 true 则执行 if 语句中的代码
  • 四大私募量化策略解析——阿尔法、套利、期货CTA、高频交易

    近年来 随着证券市场规模的不断扩大 金融衍生产品不断推出 投资策略和盈利模式发生根本性改变 投资复杂程度日益提高 导致证券市场投资者的构成比例出现了相应的变化 专业投资管理人的占比越来越大 且有加速之势 另一方面 量化对冲投资策略以其中低风
  • Unity制作FPS Demo

    等到把这个Unity FPS Demo 僵尸杀手 完成后再详细补充一下 使用Unity制作FPS游戏的经历 今天做个标识
  • 算法入门Bu1:排序

    算法入门 BuBuBu 相关数据结构 栈 队列 链表 树 并差集 堆 图等 相关算法 排序 枚举 深度和广度优先搜索 图的遍历 图中最短路径算法 最小生成树算法 割点和割遍算法 二分图的最大匹配算法等 排序算法 简单的桶排序 特点 如果需要
  • Java HashMap底层实现

    HashMap 是 Java 使用频率最高的用于映射 键值对 处理的数据类型 JDK1 8 对 HashMap 底层的实现进行了优化 例如引入红黑树的数据结构和扩容的优化等 在JDK1 8以前HashMap是由数组 链表的数据结构组成的 J
  • 【整理】串口(RS232/RS485等)通讯中RTS/CTS,DTR/DSR的含义详解

    整理 串口 RS232 RS485等 通讯中RTS CTS DTR DSR的含义详解 RS232 crifan 7年前 2013 10 17 14942浏览 0评论 背景 之前就折腾过很多关于RTS CTS DTR DSR的内容 整理 RT
  • excel 文档管理服务器,Excel Server Tutorial

    在企事业单位的实际业务中所需要使用的信息 除了数据之外 还包括文档 文档是各种类别和格式的 它们可能是Word文件 如企业的规章制度 可能是AutoCAD文件 如产品设计图纸 也可能是视频 音频文件 如内部培训资料 等等 通常的管理信息系统
  • 计算之魂思考题1.4赛跑问题

    一 问题 假设由25名短跑者争夺比赛前三名 赛场上有5条赛道 一次可以有5名选手同时比赛 比赛不计时 只看相应名次 假设选手发挥稳定 也就是说如果约翰比张三跑得快 张三比凯莉跑得快 那么约翰一定比凯莉跑得快 最少需要几次比赛才能决出前三名
  • 墨者学院的靶场之SQL注入漏洞测试(布尔盲注)

    这是我作为小白第一次成功的把key找出来了 分享一下 墨者学院的靶场SQL注入漏洞测试 布尔盲注 IP地址 219 153 49 228 端口 40205 协议 http 首先我输入了IP地址和端口号 看到这个后 我按了F12看了后台的代码
  • 【华为OD机试】食堂供餐【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐
  • 【华为OD机试真题】【python】 网上商城优惠活动(一)【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 某网上商场举办优惠活动 发布了满减 打折 无门槛3种 优惠券 分别为 1 每满100元优惠10元 无使用数限制 如100 199元可以使用1张减
  • Ubuntu18.04/16.04调整屏幕分辨率至1920*1080

    Ubuntu在设置 显示里面的分辨率选择没有1920 1080 我们可以手动增加该分辨率配置 然后进行设置 参考文字和图片 crtl alt t 打开终端窗口 获取添加分辨率的格式 输入 cvt 1920 1080 查看显示器信息及已经支持
  • 安卓HAL层 so库文件加载原理

    本文分析代码基于安卓6 0 上层app通过jni调用hal层的hw get module函数获取硬件模块 这个函数是上层与hal打交道的入口 这里我们就具体来看看hw get module的实现 文件路径 vim hardware libh
  • andorid 与滑动相关的一些知识---getscrollY onscrollchange() scrollby scrollto等

    Android系统手机屏幕的左上角为坐标系 同时y轴方向与笛卡尔坐标系的y轴方向想反 通过提供的api如getLeft getTop getBottom getRight可以获得控件在parent中的相对位置 同时 也可以获得控件在屏幕中的
  • python怎么升级python的pip

    报错提示 WARNING You are using pip version 19 1 1 however version 20 0 2 is available You should consider upgrading via the
  • ouldn‘t check the working tree for unmerged files because of an error. detected dubious ownership in

    IDEA的git的clone操作中如果出现问题 couldn t check the working tree for unmerged files because of an error detected dubious ownershi
  • LangChain 的聊天模型

    各位人工智能爱好者 大家好 今天 我们就来详细了解一下 LangChain 聊天模型 LangChain是一个很棒的工具 它提供了与各种语言模型交互的标准接口 包括基于文本的大型语言模型 LLM 和聊天模型 LangChain模型的概念 模
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 使用基本模式搜索 2 忽略大小写匹配 3 反向匹配 4 递归搜索目录 5 显示文件名 6 显示行号 7 显示上下文行 8 启用扩展正则表达式 9 将模式视为固定字符串 10 使用颜色高亮显示匹