grep命令查找文件内容_grep命令的详细使用方法

Grep 是必不可少的 Linux 和 Unix 命令。它用于搜索给定文件中的文本和字符串。换句话说,grep 命令在给定文件中搜索包含与给定字符串或单词匹配的行。对于开发人员和系统管理员来说,它是 Linux 和类 Unix 系统上最有用的命令之一。让我们看看如何在 Linux 或类 Unix 系统上使用 grep。

教程要求

要求

Linux/Unix/macOS

根权限

难度级别

简单的

类别

搜索中

美东时间。阅读时间

10分钟

目录 ↓

  • 1例子
  • 2语法
  • 3使用grep搜索文件
  • 4递归搜索
  • 5仅搜索词
  • 6忽略大小写
  • 7匹配时计数行
  • 8反转匹配
  • 9匹配前后显示行
  • 10管
  • 11仅打印选定行的文件名
  • 12突出匹配的词
  • 13将 grep 输出保存到文件
  • 14使用 fgrep 搜索特殊字符
  • 15抑制错误信息
  • 16结论

你可知道?

名称“grep”源自用于执行类似操作的命令,使用 Unix/Linux 文本编辑器 ed: grep 实用程序是一个系列,包括用于搜索文件的grep (正式名称为 egrep)和(正式名称为 fgrep) . 对于大多数用例,由于速度快且仅查看字符串和单词,fgrep 就足够了。但是,键入 grep 很容易。因此,这是个人选择。

g/re/p

grep -Egrep -F

Linux 和 Unix 中的 grep 命令示例

下面是一些标准的 grep 命令,并通过示例进行了解释,以帮助您在 Linux、macOS 和 Unix 上开始使用 grep:

  1. 在 Linux 上搜索包含文件名中单词的任何行:

    grep 'word' filename

  2. 在 Linux 和 Unix 中对单词“bar”执行不区分大小写的搜索:

    grep -i 'bar' file1

  3. 在 Linux 中的当前目录及其所有子目录中查找所有文件中的单词“httpd”:

    grep -R 'httpd' .

  4. 搜索并显示字符串 'nixcraft' 在名为 frontpage.md 的文件中出现的总次数:

    grep -c 'nixcraft' frontpage.md

让我们详细查看所有命令和选项。

句法

警告!egrep 和 fgrep 命令语法自 2007 年以来已被弃用。从 GNU Grep 版本 3.8 开始,调用这些命令现在将向用户发出警告,他们应该分别使用和 ,grep -E语法grep -F。

语法如下:

grep 'word'文件名 39;word-to-search' file.txt grep -F 'pattern'文件名 grep 'word' file1 file2 file3 grep 'string1 string2' 文件名 cat otherfile | grep 'something' 命令 | grep 'something' 命令选项 1 | grep 'data' grep --color 'data' fileName grep [ -options ]模式文件名 grep -F [ -options ] words文件

我如何使用 grep 在 Linux 上搜索文件?

在 /etc/passwd 文件中搜索名为“boo”的用户,输入:

$ grep boo /etc/passwd

示例输出:

foo:x:1000:1000:boo,,,:/home/boo:/bin/ksh

我们可以使用 fgrep/grep 来查找包含特定单词的文件的所有行。例如,要列出当前目录中名为 address.txt 的文件中包含单词“California”的所有行,

$ grep -F California address.txt

请运行: “加州化”或“加州化”。因此,-w通过 grep/fgrep 命令传递该选项以仅获取包含“California”作为整个单词的行:

$ grep -F -w California address.txt

您可以强制 grep 忽略单词大小写,即匹配 boo、Boo、BOO 和所有其他与该-i选项的组合。例如,键入以下命令:

$ grep -i "boo" /etc/passwd

最后一个也可以使用cat 命令grep -i "boo" /etc/passwd按如下方式运行:

$ cat /etc/passwd | grep -i "boo"

如何递归使用grep

您可以递归搜索,即读取每个目录下的所有文件以查找字符串“192.168.1.5”

$ grep -r "192.168.1.5" /etc/

$ grep -R "192.168.1.5" /etc/

示例输出:

/etc/ppp/options: ms-wins 192.168.1.51 /etc/NetworkManager/system-connections/有线连接 1:addresses1=192.168.1.5;24;192.168.1.2;

您将在单独的一行中看到 192.168.1.5 的结果,该行前面是在其中找到它的文件的名称(例如 /etc/ppp/options)。-h option可以使用以下方法抑制输出数据中包含文件名:

$ grep -h -R "192.168.1.5" /etc/

$ grep -hR "192.168.1.5" /etc/

样本输出:

ms-wins 192.168.1.51 地址1=192.168.1.5;24;192.168.1.2;

如何使用 grep 仅搜索单词

当您搜索 boo 时,grep 将匹配 fooboo、boo123、barfoo35 等。您可以强制 grep 命令仅选择那些包含构成整个单词的匹配项的行,即仅匹配 boo 单词:

$ grep -w "boo" file

如何使用 grep 搜索 2 个不同的词

如下使用 egrep 命令:

$ grep -E -w 'word1|word2' /path/to/file

该-E选项打开扩展正则表达式。不要使用以下已弃用的语法:

$ egrep -w 'word1|word2' /path/to/file

忽略大小写

我们可以强制 grep 忽略模式和数据中的大小写区别。例如,当我搜索“bar”时,匹配“BAR”、“Bar”、“BaR”等:

$ grep -i 'bar' /path/to/file

在此示例中,我将在搜索中包括所有子目录:

$ grep -r -i 'main' ~/projects/

匹配单词后如何计算行数

grep 可以使用 (count) 选项报告每个文件的模式匹配次数-c:

$ grep -c 'word' /path/to/file

传递该-n选项以在每行输出之前加上从中获取它的文本文件中的行数:

$ grep -n 'root' /etc/passwd

1:root:x:0:0:root:/root:/bin/bash 1042:rootdoor:x:0:0:rootdoor:/home/rootdoor:/bin/csh 3319:initrootapp:x:0:0:initrootapp:/home/initroot:/bin/ksh

强制 grep 反转匹配

您可以使用-v选项打印反转匹配;也就是说,它只匹配那些不包含给定单词的行。例如打印所有不包含单词 bar 的行:

$ grep -v bar /path/to/file

$ grep -v '^root' /etc/passwd

显示匹配前后的行

想看看比赛前的台词吗?尝试将 传递给 grep -B: 类似地, 通过 将

$ grep -B NUM "word" file

$ grep -B 3 "foo" file1

-A

$ grep -A NUM "string" /path/to/file

$ grep -A 4 "dropped" /var/log/ufw.log

$ grep -C 4 -B 5 -A 6 –color 'error-code' /var/log/httpd/access_log

………… ... _out = " /tmp/out.$$" curl -s https://www.kernel.org / > " $ _out " url = " $(grep -A 2 '<td id="latest_button ">' ${_out} | grep -Eo '(http|https) ://[^/" ] +. * xz ')" gpgurl="${url/tar.xz/tar.sign}" 通知发送“一个新的内核版本($remote)已经发布。” echo "* 正在下载 Linux 内核(新版本)..." wget -qc "$url" -O "${dldir}/${file}" wget -qc "$gpgurl" -O "${dldir}/${gpgurl*/}" ..... ..

UNIX / Linux 管道

grep 命令通常与shell 管道一起使用。

# dmesg | grep -E '(s|h)d[a-z]'

在这个例子中,显示硬盘设备的名称

# cat /proc/cpuinfo | grep -i 'Model'

# grep -i 'Model' /proc/cpuinfo

型号:30 型号名称:Intel ( R ) Core ( TM ) i7 CPU Q 820 @ 1.73GHz 型号:30 型号名称:Intel ( R ) Core ( TM ) i7 CPU Q 820 @ 1.73GHz

我最喜欢使用 grep 或egrep 命令来过滤yum 命令/ dpkg 命令/ apt 命令/ apt-get 命令的输出:

# dpkg –list | grep linux-image

# yum search php | grep gd

# apt search maria | grep -E 'server|client'

grep命令查找文件内容_grep命令的详细使用方法

使用 shell 管道示例解释 Linux grep 命令

如何只列出匹配文件的名称?

使用该-l选项列出其内容提及 main() 的文件名:

$ grep -l 'main' *.c

$ grep -Rl 'main' /path/to/project/dir/

颜色选项

最后,我们可以强制 grep 以颜色显示输出,输入:

$ grep –color vivek /etc/passwd

grep命令查找文件内容_grep命令的详细使用方法

Grep 命令实战

总之,该–color选项增加了可读性。例如,GREP_COLOR环境变量和grep –color=always可以使用如下:

GREP_COLOR='1;35' grep –color=always 'vivek' /etc/passwd

GREP_COLOR='1;32' grep –color=always 'vivek' /etc/passwd

GREP_COLOR='1;37' grep –color=always 'root' /etc/passwd

GREP_COLOR='1;36' grep –color=always nobody /etc/passwd

grep命令查找文件内容_grep命令的详细使用方法

此外,对于默认的红色,现在我们可以使用 GREP_COLOR shell 变量定义颜色。不同的颜色可以极大地帮助我们进行视觉搜索。

将 grep 输出保存到文件

假设您要搜索关键字 acl

$ grep acl squid.conf > my-acl.txt

并将输出保存为名为my-acl.txt 的文件,然后您需要运行:

$ grep -w '^acl' squid.conf > my-acl.txt

使用cat 命令/ more 命令或less 命令输出:

$ cat my-acl.txt

使用 grep 搜索特殊字符

想要使用 grep 搜索[or'或^特殊字符?-F您可以要求 grep 使用选项或命令将您的输入视为固定字符串fgrep。例如:

39;'

fgrep ''文件名39;'文件名

使用\转义字符

要匹配 egrep 或 特有的字符,请在字符前面grep -E加一个反斜杠 ( )。当不需要特殊模式匹配时,\使用 grep 通常更简单。-F例如,尝试'foo'通过放在\之前进行匹配':

grep -E '\'foo\'' 输入

在排序中使用fgreporgrep -F当您不需要使用正则表达式进行模式匹配时。

如果您希望匹配它们,则需要转义的正则表达式元字符集

有关正则表达式的更多信息和示例,请参阅egrep 命令:

. ^ $ [ \ * \{ \} \( \) . [ $ [ \ * \{ \} \( \)

扩展的正则表达式元字符是:

. ^ $ [ \ * + ?{ } | ( )

抑制错误信息

您可以通过传递选项告诉 grep 不要在屏幕上打印出“没有这样的文件或目录”或“权限被拒绝”的错误-s。例如: or用于抑制有关不存在或不可读文件的错误消息。

$ grep -R -i -s 'regex' /etc/

$ grep -R -i -s 'vivek' /etc/

-s–no-messages

本文【grep命令查找文件内容_grep命令的详细使用方法】由作者: 主键 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4076.html

(0)
上一篇 2023-03-08 11:08:02
下一篇 2023-03-09 07:00:24

相关推荐

  • proe5.0教程 从入门到精通

    本文分享CREO(ProE) 各软件版本、安装教程、视频教程(入门–精通)、学习教程(入门–精通),各取所需,给需要的朋友领取,下载方法见文末! 软件 高级教程 入门–精通 由于资料容量较大,不一一列举。

    2023-03-21
    000
  • dos命令大全及用法pdf(dos内部命令)

    晚上好,我是老杨,今天来聊聊常用的DOS命令。 虽然是老古董,但不妨碍它的好用程度。可能一些新手不晓得,但是和老杨一个年纪的,一定对DOS系统不陌生。 尽管现在大多数电脑的操作系统是Windows,但在Windows 95推出以前,占统治地位的操作系统就是DOS。 DOS即Disk Operating System,我们常成为是磁盘操作系统。 由于Windo…

    2023-03-19
    000
  • QQ提示音已分组是什么意思(qq消息提示音显示已分组)

    各位小伙伴们大家好呀!今天教大家一个如何修改qq通知音的教程。 听惯了水滴声叮咚声,那今天就给大家修改随性修改个性通知音。 相信大家都最先升级到了MIUI 11最新系统,小米今年UI适配是最快的;虽然史无前例,但是今年小米也做了妥协。放弃了小米6之前发布的手机系统的更新,毕竟老骥伏枥,志在千里。 喜欢MIUI 11系统得宿鸟流萤,这种舒适尤其是在微信上体现的…

    2023-03-12
    300
  • sql数据库开发是什么,sql数据库常用命令

    SQL 是一种非常常见但功能强大的工具,它可以帮助从任何数据库中提取、转换和加载数据。 数据查询的本质在于SQL。 随着公司和组织发现自己处理的数据量迅速增加,开发人员越来越需要有效地使用数据库来处理这些数据。 所以想要深入数据领域,SQL是必须的! 要掌握这门语言,你需要知道如何使用一些命令——其中大部分命令都基于一些基本命令。 对于整篇文章,我使用的是一…

    2023-03-15
    600
  • sqlyog连接mysql数据库

    今天在用sqlyog连接MySql8.0时提示2508错误码,如下图所示: 之后用navicat连接mysql,连接正常 那么这说明数据库连接应该是好的,那么2个工具一个可以连接,一个不可以,原因是什么?这是因为MySQL 8.0 安装时自动为‘root’@'localhost’创建帐户,密码的加密方法发生了改变,因此 SQLyog 不能正常解析,…

    2023-03-08
    600
  • java简单小游戏源代码 编程一个最简单游戏代码

    Java,一直都是编程语言学习的对象,小编常收到网友的消息:“小编,有没有源码啊?”想要源码!今天小编搜罗了资料,整理了一些经典的小游戏源代码,拿来分享给大家! 扫雷 《扫雷》是一款大众类的益智小游戏,游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 推箱子 推箱子,目的是在训练你的逻辑思考能力。在一个狭小…

    2023-03-21
    000
  • java设计模式书籍推荐_javaweb入门书籍

    “有门语言,这辈子都不敢说精通” 这门语言,对很多人来说,应该就是Java吧?学到了啥程度,你才敢在简历上写精通Java?多线程,JDBC,类,变量,MVC等等基础肯定是要精通的,此外数据库啦,甚至很多的前端知识也要极其熟悉。你们觉得要达到什么境界呢? 今天风云教育整理了一些Java方面推荐人数最多的几本书,这个清单,是许多大牛都推荐过的经典JAVA书籍,也…

    2023-03-10
    000
  • 学生信息管理系统代码_学生信息管理系统报告

    目 录 第一章 产品与服务介绍 第二章 软件工具的介绍 第三章 市场分析及定位介绍 第四章 商业模式 第五章 营销策略 第六章 财务分析 第七章 风险控制 第八章 团队介绍 第一章 产品与服务介绍 项目背景: 随着互联网用户群的越来越大,当前,全球互联网发展正进入泛在普及、深度融合、变革创新、引领转型的新阶段,对各国经济社会运行、生产生活方式、公共服务模式正…

    2023-03-11
    700
  • 如何删除电脑右下角广告 怎样关闭右下角广告

    电脑开机千百度,蓦然回首,广告却在,电脑右下角处!相信很多朋友们开机后都会有这样的感受:每次电脑开机,各种新闻、广告、游戏等等弹窗便“闪亮登场”,pass一个还有下一个,你说烦不烦人?这些弹窗广告确凿让人发愁,但想要解决这一问题就得知道原因。其实这些广告大多是因为安装软件所导致的,那么接下来我们就一起来看看如何屏蔽电脑右下角的弹窗吧! 方法一: 第一步:使用…

    2023-03-19
    000
  • 快速启动栏显示桌面怎么设置(快速启动栏显示桌面不见了)

    软件版本: 软件大小: 软件授权: 适用平台: http://dl.pconline.com.cn/download/821476.html XP系统下如何解决快速启动图标消失的问题 依次单击“开始”,“运行”,在运行对话框中输入regsvr32 /n /i:u shell32.dll,按回车键 弹出“shell32.dll中的DllInstall成功”的窗…

    2023-03-19
    100

发表回复

登录后才能评论
返回顶部
错说博客上线啦!