Linux- 系统随你玩之--grep查找文件内容

news2024/10/2 1:33:45

1、前言

我们在使用过程中经常需要对当前获取的文件进行过滤、提取和分析,以便快速查找到含有指定内容的文件或指定信息的那些行。本章我们继续深入了解有关文本检索的内容。

2、grep 查找文件内容

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep全称是Global Regular Expression Print,表示全局正则表达式版本。

2.1、grep由来

grep 命令的由来可以追溯到 UNIX 诞生的早期,在 UNIX 系统中,搜索的模式(patterns)被称为正则表达式(regular expressions),为了要彻底搜索一个文件,有的用户在要搜索的字符串前加上前缀 global(全面的),一旦找到相匹配的内容,用户就像将其输出(print)到屏幕上,而将这一系列的操作整合到一起就是 global regular expressions print,而这也就是 grep 命令的全称。

2.2、特点

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
同时也能在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子。

2.3、格式

grep 命令的基本格式如下:
[root@localhost ~]# grep [选项] 模式 文件名
说明:
这里的模式,要么是字符(串),要么是正则表达式。
grep 命令常用选项及含义

选项含义
-c仅列出文件中包含模式的行数。
-i忽略模式中的字母大小写。
-l列出带有匹配行的文件名。
-n在每一行的最前面列出行号。
-v列出没有匹配模式的行。
-w把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行。

注意:

  1. 如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;
  2. 如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。

3、实操例子

我们现在针对已经学习过的Linux基础知识 -进行学习练习以检验学习效果。
1、假设文件fyydlz.txt的文本如下(可以利用touch命令和vi命令组合创建):

hello fyydlz world
wold hello
nothing is important
i like fyydlz fyydlz
hello world
wold hello
nothing is important
i like fyydlz fyydlz

grep 命令用来查找文本,这里是最常用的几个操作例子:

3.1、查找文件fyydlz.txt中含有"hello"字符串的行:

 grep hello fyydlz.txt

在这里插入图片描述

3.2、使用正则表达式查找文件fyydlz.txt中含有数字的行:

grep -E "\d." fyydlz.txt

在这里插入图片描述

3.3、查找文件fyydlz.txt中不包含"hello"字符串的行:

grep -v hello fyydlz.txt

在这里插入图片描述

3.4、查找文件fyydlz.txt中含有"fyydlz"字符串的行以及它前面的3行:

grep fyydlz -B 3 fyydlz.txt

在这里插入图片描述

3.5、查找文件fyydlz.txt中含有"fyydlz"字符串的行以及它后面的3行:

grep fyydlz -A 3 fyydlz.txt

在这里插入图片描述

3.6、查找文件fyydlz.txt中含有"4."字符串的行以及它前后3行:

grep 4. -C 3 fyydlz.txt

在这里插入图片描述

4、日常运维用法

1、我们在生产环境服务器上,经常使用到下面这个命令:

ps -ef | grep java或nginx

显然,此处 grep的作用就是帮助筛选出那些运行中的java或nginx进程。

2、输出以 h 开头的行(不区分大小写)

grep "^h" fyydlz.txt -i -n

注: 这里的-i代表不区分大小写, -n代表显示匹配行和行号。

在这里插入图片描述

3、输出以.结尾的行

grep "\.$" fyydlz.txt -n

注: 因为.在这里有着特殊含义, 所以要用\转义一下, 如果不加转义字符的话, grep就会把它当做正则表达式来处理(.代表的含义是匹配任意一个字符)。
在这里插入图片描述

4、^$(代表空行的意思)组合符找出文件的空行, 以及行号

grep "^$" fyydlz.txt -n

在这里插入图片描述

5、.点符号
"."点表示任意一个字符, 有且只有一个, 不包含空行。

grep "." fyydlz.txt -n

在这里插入图片描述

6、*符号
"*"表示找出前一个字符0次或一次以上
找出文件中i出现0次或多次的行和行号。

grep "i*" fyydlz.txt -n

在这里插入图片描述

7、*.组合符
".*"表示所有内容, 包括空行。

grep ".*" fyydlz.txt -n

在这里插入图片描述

8、^.*z符 (含义: 以任意内容开头, 直到z结束)

grep "^.*z" fyydlz.txt -n

在这里插入图片描述

9、[abc]中括号
中括号表达式,[abc]表示匹配中括号中任意一个字符, a或b或c,常见的形式如下:

  • [a-z]匹配所有小写单个字母[A-Z]匹配所有单个大写字母;
  • [a-zA-Z]匹配所有的单个大小写字母;
  • [0-9]匹配所有单个数字;
  • [a-zA-ZO-9]匹配所有数字和字母;
  • 匹配abc字符中的任意一个,得到它的行数和行号;
 grep "[abc]" fyydlz.txt -n

在这里插入图片描述

10、 grep 参数-o
使用"-o"参数选项, 可以显示被匹配到的关键字, 而不是将整行的内容都输出。

 grep "[abc]" fyydlz.txt -n -o

在这里插入图片描述

11、显示出文章中有多少行有a
grep “[abc]” fyydlz.txt -c
"-c"只统计匹配的行数
在这里插入图片描述

12、[^abc]中括号中去反
[abc]或[a-c]这样的命令, "^"符号在中括号中第一位表示排除, 就是排除字符a,b,c
注: 出现再中括号里的尖角号表示取反。

grep "[^abc]" fyydlz.txt -n

在这里插入图片描述
测试文件fyydlz.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Loki收集网络设备日志

新钛云服已累计为您分享716篇技术干货前言Loki是Grafana Labs团队的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统,它的设计非常简洁易于操作。受Prometheus启发的,可以水平扩展、高可用以及支持多租户的日…

S-HUB如何实现数据库对接WEBSERVICE API

近几年SAAS被大家逐步认可,越来越多的企业购买SAAS服务,但是仍然有很多自建各种业务系统,这些系统建设时一般都只考虑自身业务,而不是特别注重与别的系统之间的互联互通。而企业为了提升效率,又需要将这些业务与别的系…

Java开发 - 双向链表不可怕

前言 说起链表,那还是当初上学的时候学习的,印象里就觉得像锁链一样一环扣一环,后来工作后就几乎没实际接触过链表,每当遇到链表,总是不知道该怎么讲,因为对链表的本质一无所知。也是在学习了Java后&#…

剑指offer----C语言版----第三天

目录 1. 替换空格 1.1 题目描述 1.2 题目背景 1.3 必要的思考 1.4 思路一 1.5 思路二 1.6 思路三(学方法) 1.7 小试牛刀 1. 替换空格 原题链接:剑指 Offer 05. 替换空格 - 力扣(LeetCode)https://leetcode.cn/p…

回首2022,展望2023(年度总结)

回首2022,展望2023 热爱技术的伙计们: 哈喽,这篇文章经过一周左右的写写改改,在2022最后的工作日与大家见面,有人说总结是为了更好的开始。是的,一年的时间真的很快,马上就是2023了&#xff0…

k-mean聚类的python实现

文章目录介绍KMeans()函数介绍实例导入相关包整理数据手肘法确定分类个数创建模型绘制结果分为3类的结果作者:张双双介绍 sklearn.cluster模块提供了常用的非监督聚类算法。 该模块中每一个聚类算法都有两个变体: 一个是类(class)另一个是函数(function)。 类实现了…

day06 Debug基础练习

1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。 1.2 Debug介绍与操作流程 如何加断点 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可 …

刷题记录:牛客NC24858Job Hunt [最长路+两种不同判环详解]

传送门:牛客 题目描述: 奶牛们正在找工作。农场主约翰知道后,鼓励奶牛们四处碰碰运气。而且他还加了一条要求:一头牛在一个城市 最多只能赚D(1≤D≤1000)美元,然后它必须到另一座城市工作。当然,它可以在…

2自由度陀螺仪滑模控制和PID控制跟踪目标轨迹

目录 前言 1.陀螺仪模型 2.滑模跟踪控制 3.PID控制 4.总结 前言 不为别的,这篇小文章只为内涵某人,问候一下他:不是有手就行,哈哈~ 1.陀螺仪模型 2.滑模跟踪控制 对于2自由度陀螺仪有两个方向x、y跟踪,所以需要…

对于软件测试认识的几大误区,看看你有没有?

对于软件开发来说,软件测试可能还不被大众了解,很多开发人员,包括很多软件高层管理人员,由于缺乏软件测试的知识和实践经验,对软件测试的认识还有很多的误区: 误区一:如果软件发布后有质量问题…

我们一起来谈谈高并发和分布式系统的幂等如何处理!

什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等…

Codeforces Round #841 (Div. 2)

题目链接 A. Joey Takes Money 题目描述 input output 题意: 有一个长度为n的数组,你可以进行一步操作,选择两个i,j,然后再选择两个数x,y,使得a[i]a[j] xy,然后将a[i] x,a[j] y,问任意步操…

Spring 中运用的 9 种设计模式

Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题。本文以实现方式、实质、实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章发布,话不多说,来个转发、在看、收藏三连…

京东软件测试岗:惨不忍睹的三面,幸好做足了准备,月薪17k,已拿offer

我今年25岁,专业是电子信息工程本科,19年年末的时候去面试,统一投了测试的岗位,软件硬件都有,那时候面试的两家公司都是做培训的,当初没啥钱,他们以面试为谎言再推荐去培训这点让我特别难受。 …

Unity 搭建ILRuntime开发环境

Unity热更新目前主流的方案有: Lua, ILRuntime, puerts, huatuo方案。前两个大家都比较熟悉了,puerts 是基于TypeScript开发的热更新,huatuo是基于C#的方案。后两个大家会比较陌生。本系列分享基于ILRuntime来做热更新。 对啦!这里有个游戏开…

【财务】FMS财务管理系统---存货管理

前一篇文章介绍了付款相关的内容,本文中笔者继续介绍FMS财务管理系统的设计,今天是关于存货管理的介绍。 财务存货管理应该就是针对公司的生产原材料、物料、成品、加工品的数量与金额的管控。 在前面也介绍了,存货属于公司的资产&#xff0…

纯Java实现一个网页版的Xshell

前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:GateOne、webss…

微信小程序实现身份证识别-orc

项目中有一个识别身份证的需求,经过调研,最后决定使用微信小程序orc插件进行开发。 一:首先登录小程序公众平台。 1:进入设置> 第三方设置。 2:添加ocr插件。 3:添加完后,需要领取免费额度,100次/天。 https://fuwu.weixin…

SpringBoot+Vue实现后疫情时代下的旅游管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

Linux高级之日志管理

Linux高级之日志管理1.系统常用日志2.日志服务的稳定性3.自定义日志服务4.日志轮替5.内存日志1.系统常用日志 日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件…