linux基本功系列之grep命令
文章目录
- 前言
- 一. grep命令介绍
- 二. 语法格式及常用选项
- 三. 参考案例
- 3.1 搜索文件中以root开头的文件
- 3.2 搜索文件中出现的root
- 3.3 搜索除了匹配行之外的行
- 3.4 匹配的部分使用颜色显示
- 3.5 只输出文件中匹配到的地方
- 3.6 输出包含匹配字符串的行,并显示所在的行数
- 3.7 统计文件或者文本中包含匹配字符串的行数
- 总结
前言
大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第48篇文章。
专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. grep命令介绍
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
英文注解:
grep ['grep] 搜索目标行命令·
global [ˈgloʊbl] 全球的,球状的
regular 美 [ˈrɛɡjəlɚ] 有规律的,规则的, 正规军(n)
expression 美 [ɪkˈsprɛʃən] 表达,表现,表情,脸色,态度
例句: It’s enough to make you wet yourself, if you’ll pardon the expression
linux支持三种形式的grep命令: grep , egrep ,grep -E
二. 语法格式及常用选项
依据惯例,我们还是先查看帮助,使用grep --help
[root@mufeng test]# grep --help
用法: grep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c正则表达式选择与解释:-E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)-F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。-G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)-P, --perl-regexp PATTERN 是一个 Perl 正则表达式-e, --regexp=PATTERN 用 PATTERN 来进行匹配操作-f, --file=FILE 从 FILE 中取得 PATTERN-i, --ignore-case 忽略大小写-w, --word-regexp 强制 PATTERN 仅完全匹配字词-x, --line-regexp 强制 PATTERN 仅完全匹配一行-z, --null-data 一个 0 字节的数据行,但不是空行Miscellaneous:-s, --no-messages suppress error messages-v, --invert-match select non-matching lines-V, --version display version information and exit--help display this help text and exit输出控制:-m, --max-count=NUM NUM 次匹配后停止-b, --byte-offset 输出的同时打印字节偏移-n, --line-number 输出的同时打印行号--line-buffered 每行输出清空-H, --with-filename 为每一匹配项打印文件名-h, --no-filename 输出时不显示文件名前缀--label=LABEL 将LABEL 作为标准输入文件名前缀-o, --only-matching show only the part of a line matching PATTERN-q, --quiet, --silent suppress all normal output--binary-files=TYPE assume that binary files are TYPE;TYPE is 'binary', 'text', or 'without-match'-a, --text equivalent to --binary-files=text-I equivalent to --binary-files=without-match-d, --directories=ACTION how to handle directories;ACTION is 'read', 'recurse', or 'skip'-D, --devices=ACTION how to handle devices, FIFOs and sockets;ACTION is 'read' or 'skip'-r, --recursive like --directories=recurse-R, --dereference-recursivelikewise, but follow all symlinks--include=FILE_PATTERNsearch only files that match FILE_PATTERN--exclude=FILE_PATTERNskip files and directories matching FILE_PATTERN--exclude-from=FILE skip files matching any file pattern from FILE--exclude-dir=PATTERN directories that match PATTERN will be skipped.-L, --files-without-match print only names of FILEs containing no match-l, --files-with-matches print only names of FILEs containing matches-c, --count print only a count of matching lines per FILE-T, --initial-tab make tabs line up (if needed)-Z, --null print 0 byte after FILE name文件控制:-B, --before-context=NUM 打印以文本起始的NUM 行-A, --after-context=NUM 打印以文本结尾的NUM 行-C, --context=NUM 打印输出文本NUM 行-NUM same as --context=NUM--group-separator=SEP use SEP as a group separator--no-group-separator use empty string as a group separator--color[=WHEN],--colour[=WHEN] use markers to highlight the matching strings;WHEN is 'always', 'never', or 'auto'-U, --binary do not strip CR characters at EOL (MSDOS/Windows)-u, --unix-byte-offsets report offsets as if CRs were not there(MSDOS/Windows)
为了更直观一些,我们把常用的参数用表格来展示:
| 参数 | 描述 |
|---|---|
| -i | 忽略大小写 |
| -E | 启用POSTIX扩展正则表达式 |
| -P | 启用perl正则 |
| -o | 只输出正则表达式的匹配的内容 |
| -w | 整字匹配 |
| -v | 取反,也就是不匹配的 |
| -n | 输出行号 |
有了具体的参数之后,我们再来看实战案例:
三. 参考案例
3.1 搜索文件中以root开头的文件
以root开头的文件,可以用 ^root
比如查看/etc/passwd 中以root开头的文件,操作如下:
[root@mufenggrow ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
3.2 搜索文件中出现的root
搜某个单词,我们直接在grep后面跟上单词名字即可:
案例一: 搜索/etc/passwd中的root用户
[root@mufenggrow ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]#
案例二: 从多个文件中搜索root
root@mufenggrow ~]# echo root >> a.txt
[root@mufenggrow ~]# echo root >> b.txt
[root@mufenggrow ~]# grep "root" /etc/passwd a.txt b.txt
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
a.txt:root
b.txt:root
[root@mufenggrow ~]#
3.3 搜索除了匹配行之外的行
此处使用-v 参数,比如取反
案例一: 统计文件的行数且不包含空行
空行的表示方法: ^$
[root@mufenggrow ~]# cp /etc/passwd ./
## 源文件一共35行
[root@mufenggrow ~]# cat /etc/passwd |wc -l
35
## 追加空行进去
[root@mufenggrow ~]# echo "" >> /etc/passwd
[root@mufenggrow ~]# cat /etc/passwd |wc -l
36
## 去掉空行测试
[root@mufenggrow ~]# grep -v ^$ /etc/passwd |wc -l
35
[root@mufenggrow ~]#
有时候我们修改了配置文件,文件中包含大量的# ,我们想去掉#查看内容,就可以使用
[root@mufenggrow ~]# grep -v ^# passwd |wc -l
35
3.4 匹配的部分使用颜色显示
这里可以使用 --color=auto,我们来查看一下包含root的行,并高亮显示要查找的root。
[root@mufenggrow ~]# grep root /etc/passwd --color=auto
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]#
这样显示,效果不明显,我们看下图:

可以看到,所有的root都是红色表示的。
3.5 只输出文件中匹配到的地方
比如我们要查询root,但我不想显示包含root的行,而是只显示要查询的内容:
此时需要使用 -o 参数,代码如下
[root@mufenggrow ~]# grep -o root /etc/passwd
root
root
root
root
要注意,如果一行中有10个root,这里就显示10个,而不是只显示一个,所以3.4的案例中我们查询的时候,包含root的有两行,但有4个root,在3.5案例中,显示了所有的root。
3.6 输出包含匹配字符串的行,并显示所在的行数
此处可以使用-n 参数, -n 会在一行的前面加上 行号: 比如“4:”
我们来看下代码示例:
[root@mufenggrow ~]# grep -n "root" passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
我们要统计一个文件一共有多少行,也可以使用-n 参数
root@mufenggrow ~]# grep -n "" passwd |awk -F : '{print $1}' |tail -n 1
35
3.7 统计文件或者文本中包含匹配字符串的行数
此时可以用-c参数:
[root@mufenggrow ~]# grep -c "root" passwd
2
包含root的有两行, 如果我们要统计文本的行数:
[root@mufenggrow ~]# grep -c "$" passwd
35
相当于查找 的行数,可以看到一共有35个的行数,可以看到一共有35个的行数,可以看到一共有35个符号,也就是35行。
总结
grep命令在日常工作中,应用的比较广泛,一定要认真学习,记熟记牢常用参数。
💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~


相关文章:
linux基本功系列之grep命令
文章目录前言一. grep命令介绍二. 语法格式及常用选项三. 参考案例3.1 搜索文件中以root开头的文件3.2 搜索文件中出现的root3.3 搜索除了匹配行之外的行3.4 匹配的部分使用颜色显示3.5 只输出文件中匹配到的地方3.6 输出包含匹配字符串的行,并显示所在的行数3.7 统…...
硬件设计——DDR
一、DDR简介 (1)DDRDouble Data Rate双倍速率同步动态随机存储器。严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。…...
最近你提前还贷了吗
最近你有想过提前还贷吗?以前,欠别人的是大爷,借别人钱的是孙子。现在好像反过来了呀,想还钱成了孙子。现在,各种银行以各种方式增加你提前还贷的难度。比如第一步,关闭app线上还款入口第二步,需…...
关于STM32常用的8种GPIO输入输出模式的理解
目录 GPIO共有8中输入输出模式,分别是:上拉输入、下拉输入、浮空输入、模拟输入、开漏输出、推挽输出、开漏复用输出、推挽复用输出 ,下面我们详细介绍以下上面的八种输入输出模式。 一、输入模式 (1)上拉输入&#x…...
vue - vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果
问题: 最近遇到一个问题,我们在企业微信中的 H5 项目中需要用到table表格(支持懒加载 上划加载数据)。但是他们在锁头、锁列的情况下,依旧会出现边界橡皮筋效果。就会显示的很奇怪。 什么是ios橡皮筋效果: 我们知道元素…...
webpack(高级)--创建自己的loader 同步loader 异步loader loader参数校验
webpack 创建自己的loader loader是用于对模块的源代码进行转换(处理) 我们使用过很多loader 比如css-loader style-loader babel-loader 我么如果想要自己创建一个loader 首先创建webpack环境 pnpm add webpack webpack-cli -D 之后创建loader模块…...
Assignment写作各个部分怎么衔接完美?
Assignment格式很简单,就只有四个部分,按着通用的套路来,发现也没什么难度。不过这4个部分自己需要衔接完美,下面就给大家分享一下写Assignment最简单的方法。 如果没有目录可以放在第一页的开头,用“标题字体”加重显…...
医疗器械实验室设计规划全了SICOLAB
一、通用型实验室医疗器械物理性能能检测中,有部分通用型试验,可覆盖不同产品检测,这些实验室需要重点考虑、设计。1、微粒检测室微粒检测室用于医疗器械产品微粒检测,包括微粒、落絮、药液滤除率等项目。微粒检测室要求为洁净室&…...
2023年浙江建筑施工物料提升(建筑特种作业)模拟试题及答案
百分百题库提供特种工(物料提升机)考试试题、特种工(物料提升机)考试预测题、特种工(物料提升机)考试真题、特种工(物料提升机)证考试题库等,提供在线做题刷题,在线模拟考…...
shell编程经典案例,建议收藏
1、编写hello world脚本 #!/bin/bash# 编写hello world脚本echo "Hello World!"2、通过位置变量创建 Linux 系统账户及密码 #!/bin/bash# 通过位置变量创建 Linux 系统账户及密码#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 useradd "$1" …...
C++通用容器
容器简介1.1 容器的分类序列容器 vector, list, deque容器适配器 queue, stack, priority_queue关联容器 set, map, multiset, multimap序列容器是提供一组线性储存的容器,而容器适配器负责将它们按照数据结构的方式组织起来,关联容器提供关键字与值之间…...
字符串的特殊读取——基于蓝桥杯两道题目(C/C++)
目录 1 例题 1.1 卡片换位 1.2 人物相关性分析 2 字符串的读取 2.1 综述 2.2 scanf 2.3 getline/getchar/get 2.4 注意 2.5 说明 先看例题 1 例题 1.1 卡片换位 问题描述 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏。 看…...
[足式机器人]Part3机构运动微分几何学分析与综合Ch01-4 平面运动微分几何学——【读书笔记】
本文仅供学习使用 本文参考: 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-4 平面运动微分几何学1.2.3-2 点轨迹的Euler-Savary公式1.2.4 高阶曲率理论1.2.3-2 点轨迹的Euler-Savary公式 例1-7: 平面曲柄摇杆机构的 Euler-Sa…...
【每日一题Day120】LC2341数组能形成多少数对 | 哈希表 排序
数组能形成多少数对【LC2341】 给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤: 从 nums 选出 两个 相等的 整数从 nums 中 移除这两个整数,形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一…...
win11/10+opencv3.x/4.x配置 VS2019方法(简单使用,亲测)
首先下载 opencv,去官网下载百度》输入opencv,点击opencv|home,进入官网。点击 “Library”---->Release点击 对应版本下的 window版本,点击 --安装--extract---》设置路径。这个就是把库文件扩展到指定的路径下,扩…...
HTTP协议---详细讲解
目录 一、HTTP协议 1.http 2.url url的组成: url的保留字符: 3.http协议格式编辑 ①http request ②http response 4.对request做出响应 5.GET与POST方法 ①GET ②POST 7.HTTP常见Header ①Content-Type:: 数据类型(text/html等)在上文…...
Syntax-Aware Aspect-Level Sentiment Classification with PWCN 论文阅读笔记
一、作者 Chen Zhang, Qiuchi Li, and Dawei Song. 2019. Syntax-Aware Aspect-Level Sentiment Classification with Proximity-Weighted Convolution Network. In Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information …...
hadoop考试应急
概述 四大特点:大量化、快速化、多元化、价值化 关键技术:采集、存储管理、处理分析、隐私和安全 计算模式:批处理、流、图、查询分析计算 Hadoop处理架构 了解就好 2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000…...
【React】Hooks
🚩🚩🚩 💎个人主页: 阿选不出来 💨💨💨 💎个人简介: 一名大二在校生,学习方向前端,不定时更新自己学习道路上的一些笔记. 💨💨💨 💎目…...
升级Room引发的惨案!!
kotlin升级 在升级kotlin的时候,直接升级到大版本的kotlin(比如1.7以上),直接报错,只是报错不知道原因。 koltin Release details 后来把koltin版本改成1.6.0,报如下的错,我们才知道gradle是需…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
