linux中grep命令数据过滤和筛选

Linux grep grep常见用法 阅读详情
AI摘要

本文介绍了Linux系统中grep命令的使用。grep是强大的文本搜索工具,可结合正则表达式搜索文本,通过返回状态值实现自动化文本处理。文中给出了grep命令的用法、常用选项及多个使用实例,还介绍了正则表达式、POSIX字符和GNU规范等相关知识。

Linux世界中有句古老的说法“一切皆文件”,而且很多配置文件是纯文本文件,工作中,我们时常需要对大量的服务器进行配置的修改,如果以手动方式在海量的数据中进行查找匹配并最终完成修改,则其效率极低。此时,Linux系统提供了一个非常方便的grep命令,grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。下面对grep命令使用进行讲解。

grep命令

grep是一个强大的文本搜索工具。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

用法:grep【选项】匹配模式【文件】。

常用选项:

-a 不要忽略二进制数据。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-o 只输出文件中匹配到的部分。

使用实例

找出程序运行的端口
netstat -ap | grep ssh
在这里插入图片描述

查找本地ip

ifconfig ens33 | grep netmask | tr -s " " | cut -d " " -f3
在这里插入图片描述
使用grep指令在当前目录下所有文件中搜索指定文本

grep -n -r “test” ./*
在这里插入图片描述
统计一个文件中包含特定字符串的个数
在这里插入图片描述
不在屏幕上显示过滤的结果

grep -q root/etc/passwd
在这里插入图片描述
不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试

什么是正则表达式

正则表达式就是一种计算机描述语言,通过正则表达式可以直接告诉计算机所需要的是字母A并精确匹配定位,也可以告诉计算机需要的是26个字母中的任意一个字母进行匹配等等。

现在很多程序、文本编辑工具、编程语言都支持正则表达式,比如使用grep过滤时就使用正则匹配的方式查找数据。

正则表达式及其含义


^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行。    

$  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。    

.  #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    

*  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    

.*   #一起用代表任意字符。   

[]   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    

[^]  #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    

\(..\)  #标记匹配字符,如'\(love\)',love被标记为1。    

\<      #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    

\>      #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    

x\{m\}  #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    

x\{m,\}  #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    

x\{m,n\}  #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   

\w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   

\W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。   

\b    #单词锁定符,如: '\bgrep\b'只匹配grep。  

基本表达式的实例

查找包含"root"的行

grep “root” /tmp/passwd
在这里插入图片描述
查找与"0:"之间包含任意两个字符的字符串
在这里插入图片描述
查找包含oot或ost的行
在这里插入图片描述
查找包含"0~9"数字的行
在这里插入图片描述
查找以root开头的行
在这里插入图片描述
查找以bash结尾的行
在这里插入图片描述
过滤文件的空白行
在这里插入图片描述
如果过滤文件为非空白行,可以使用grep -v “^$” /tmp/passwd

POSIX字符:

为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]    #文字数字字符   

[:alpha:]    #文字字符   

[:digit:]    #数字字符   

[:graph:]    #非空字符(非空格、控制字符)   

[:lower:]    #小写字符   

[:cntrl:]    #控制字符   

[:print:]    #非空字符(包括空格)   

[:punct:]    #标点符号   

[:space:]    #所有空白字符(新行,空格,制表符)   

[:upper:]    #大写字符   

[:xdigit:]   #十六进制数字(0-9,a-f,A-F)  

linux 允许通过方括号使用POSIX标准规范,如[:alnum:]将匹配任意单个字母数字字符,下面通过几个简单例子来说明。

在这里插入图片描述
由于过滤的输出的内容较多,以下仅为部分输出。
在这里插入图片描述
GNU规范

Linux中的GNU软件一般支持转义字符,这些转义元字符有:\b为边界字符,匹配单词的开始或结尾,\B与\b为反义词。\B不会匹配单词the,仅会匹配the中间的单词,如atheist。而\w等同于[_[:alnum:]],\W等同于[ ^ _ [:alnum:]]。

另外\D表示任意非数字,\s表示任意空白字符。\S表示任意非空白字符。

实例

匹配所有字母、数字及下划线

grep “\w” /tmp/passwd
在这里插入图片描述
上面的内容太多,这里不再显示输出内容。

匹配i结尾的单词
在这里插入图片描述
总结

在海量数据中,grep命令搜索有效消息提供了便利而又高效的方式,这里零零散散的举了一些例子,当然,grep的用法可不仅仅局限于此。更多了解可以参考man手册。

最后来一句励志的话哈。一旦能够说出什么东西的名字,就会很容易注意到它。你就会掌握它,拥有它,使它在你的控制中。

希望这个篇文章对您有一定的帮助!

Linux命令-过滤筛选输出 Linux基础命令-grep\sed\awk 阅读详情

相关推荐

Linux系列:grep过滤、awk拆分、sed替换的使用方法与区别

grep 筛选过滤,支持正则表达式 ^: 开始符号 $: 结尾符号 .: 任意一个字符 n*:任意一个或多个n [zyx]: 匹配任意一个 [^zyx]: 不匹配任意一个 awk 拆分行,选择列 sed 替换字符串 ...

NIO4444 1298

linux grep 匹配空格_linux中grep命令数据过滤和筛选

Linux世界中有句古老的说法“一切皆文件”,而且很多配置文件是纯文本文件,工作中,我们时常需要对大量的服务器进行配置的修改,如果以手动方式在海量的数据中进行查找匹配并最终完成修改,则其效率极低。此时,Linux系统提供了一个非常方便的grep命令,grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。下面对grep命令使用进行讲解。grep命令grep是一个强大的文...

weixin_36370851的博客 1万+

ESP32-S3双屏AI吊坠:微型边缘智能终端设计实践

边缘智能终端是指在设备端完成数据感知、处理与响应的嵌入式系统,其核心在于低延迟、高隐私与弱网适应性。基于ESP32-S3等轻量级主控,通过语音唤醒、本地AI推理与双屏异步渲染等关键技术,可构建资源受限场景下的实用化人机交互节点。这类设计显著降低对云端依赖,提升实时性与数据安全性,广泛应用于智能穿戴、IoT交互面板及便携式语音设备。本文以‘璀璨·AI吊坠’为实例,深入解析双面圆形屏驱动、ES8311音频链路优化、VAD+Porcupine本地语音流水线,以及亚微安级低功耗状态机实现,为微型AI终端的软硬协同开

weixin_42348783的博客 633

针对文件内容匹配,过滤,排序

grep -e:逻辑或,可以匹配多个条件,可以实现多个选项间的逻辑关系,可以跟多个条件。grep -A 就是after,后面跟数字,匹配到内容行后,向下展示几行。sort:以行为单位,对文件内容进行排序,也可以根据不同的数据类型进行排序。-c 统计连续重复的行的次数,并且合并重复的行,并打印不会改变文件内容。grep -f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容。和awk有相似之处,取列;-o 输出的文件名,将排序后的结果转存到指定的文件。-u 显示仅出现一次的行,包括不连续的重复的行。

cyb0428的博客 2673

Windows10下RTABMAP+T265实现三维建图

win10+rtabmap+t265扫描地形

Suxiang1997的博客 3486

训练救星!EMA多尺度注意力让YOLOv11轻松攻克自定义数据集不涨点难题

在目标检测模型训练中,自定义数据集不涨点是阻碍算法落地的核心痛点之一。传统训练策略在数据分布特殊、样本量有限的场景下极易陷入收敛停滞,而 EMA(指数移动平均)结合多尺度注意力的方案,在自定义数据集上实现mAP 提升 6.5%,同时让训练曲线从“平缓停滞”转为“持续攀升”,彻底解决创新点在自有数据上的性能瓶颈。本教程将带你从原理到实践,通过 EMA 多尺度注意力为 YOLOv11 注入训练稳定性,让你的自定义数据集模型训练实现质的飞跃。EMA 衰减率:小样本数据集建议将decay。

FJN110的博客 160

grep 文本过滤命令

grep简介 grep(Global search regular expression and print out the line)全面搜索研究正则表达式并显示出来。grep 命令是一种强大的文本搜索工具,根据用户指定的模式”对目标文本进行匹配检查,打印匹配到的行,由正则表达式或者字符及基本文本字符所编写的过滤条件。Unix的grep家族包括grep、egrep和fgrep。 grep的过滤...

even160941的博客 5866

Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)

Vue-高效简洁列表拖曳排序/鼠标拖动改变顺序排列组件支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无BUG列表拖曳排序插件vuedraggable拉动拽动拖动顺序改变排序js,vue.js,nuxt.js列表如何实现鼠标拖曳改变顺序排列支持滚动条内复杂数据对象带拖动效果动画排序完毕自动排列数组位置克隆Vue.Draggable官方文档教程SortableJS与vuedraggable列表拖动排序Vue拖拽组件库vuedraggable的安装与使用用户用鼠标拖动排序功能源码最好

🏆 前端领域优质创作者 4847

linux指令中筛选指令,小猿圈之Linux使用grep筛选多个条件及grep常用过滤命令

linux最常用的就是命令,了解linux的朋友都知道;今天小猿圈linux老师说一下grep命令的使用,希望大家看后能掌握grep命令,接下来看一下grep命令的使用方法。cat log.txt | grep 条件;cat log.txt | grep 条件一 | grep 条件二;cat log.txt | grep 条件一 | grep 条件二 | grep 条件三;grep 条件一 log...

weixin_31955465的博客 1095

Matlab安装硬件支持包、simulink离线安装硬件支持包安装,离线安装ESP32、stm32等安装包,Are you up-to-date on SoftWare Maintenance?

注意:如果提示出现“没有可从此位置安装的兼容支持包后,这个问题,请查看步骤5,是不是没有按照步骤5进行操作.一般情况下出现“没有可从此位置安装的兼容支持包”后,重新安装选择了默认路径就可以成功。如果不是很清楚,直接安装在默认的文件夹下面,即使这个文件夹下没有matlab相关的文件夹,也要这么下载,没有为什么,切记尽量按默认路径安装,更改下载的路径不成功,别怪我没提醒。:下载到哪里非常重要,如果下载的不是默认的路径下,就需要将其中这个的是这个archives文件夹,连同其他文件一并要复制出来,拷贝到。

pvmsmfchcs的博客 1746

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 193

linux grep过滤命令

grep过滤命令 grep 单个过滤 logcat grep ABC grep -E 多个条件过滤 logcat grep -E “A|B|C” file.txt 满足任意条件(A、B和C之一)将匹配。 grep A file.txt | grep A |grep B 必须同时满足三个条件(A、B和C)才匹配。 反向查找 grep -v 单个过滤 logcat grep -v ABC 反向查找 grep -Ev 多个过滤 logcat grep -Ev ‘A|B|C’ ...

Neo的博客 3581

vue3中使用antv-S2表格(基础功能版)

表格的数值默认会渲染排序 icon, 可以配置 showDefaultHeaderActionIcon关闭。当配置为对象时,always 控制是否在子维度不足 2 个时始终展示小计,默认不展示。首先创建一个vue3+vite+ts项目,可以查看下面相关文章,只看第一条即可。可以调整行宽、列宽、列排序、单个单元格详情展示、选中某列、某行等基本功能。可以通过上面设置的SUM函数自动计算出数值,也可以自定义累加函数。配置自定义方法优先级大于配置聚合方式,即配置。1、在项目中安装(npm/pnpm都可以)

蜗牛~~ 2210

linux下日志文本文件等的按行截取和按时间截取 及 linux对nginx访问日志进行搜索筛选过滤去重统计分析的常用命令awk集合

服务器的日志文件一般都很大,对日志文件进行截取是在对服务器日志排查时必不可少的工作。以下几个命令比较有用。第一:定位要提取的日志的起始行,加上-n标记所在行数,加上--color以进行颜色提示。第二:取出所要截取的起始行数之后可利用以下三种命令进行截取。sed命令比较容易理解,使用head和tail结合取文件时要注意顺序和参数。上面三个命令的执行结果是相同的。第二个命令的意思是从日志的1013行开始开始截取,只截取5条日志。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 973

VMware报错系列:虚拟机配置文件(.vmx)损坏或丢失---修复

虚拟机配置文件(.vmx)损坏或丢失---修复

weixin_54626591的博客 7011

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Shell命令-文件及内容处理之grep(egrep)、join

文件及内容处理 - grep(egrep)、join 1. grep(egrep):文本过滤工具 grep(egrep)命令的功能说明 grep命令是Linux系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据,如果配合正则表达式技术一起使用,则功能更加强大。egrep 是 grep 的扩展正则,后面讲三剑客时会讲的。 grep命令的语法格式 grep [OPTIO...

weixin_34242331的博客 155

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux命令

Linux命令

qq_54539166的博客 302

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux常用指令(八)——管道过滤

在Linux中,管道(pipeline)是一种非常强大的特性,它允许将一个命令的输出作为另一个命令的输入,从而实现数据流的传递和处理。通过管道,可以轻松地将多个命令组合起来,以实现复杂的数据处理任务。过滤(filtering)则是管道中常见的一种操作,用于对数据流进行筛选、转换或处理。

qq_38473254的博客 745

文本的过滤,裁剪以及筛选

Split 文件拆分(面试题)(分割完加名字,好识别),可以将大文件拆分成若干小文件。paste 文件内容合并(cat是上下合并,paste是左右合并,都是临时合并)-e 逻辑或,可以匹配多个条件,可以实现多个选项间的逻辑关系。-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容。sort 以行为单位对文件的内容进行排序,也可以根据不同的数据类型进行排序。-o 输出的文件名:将排序后的结果转存到指定的文件。-u 显示仅出现一次的行,包括不连续出现的重复行。-A 2 匹配到内容行后,再向下展示几行。

qq_61855329的博客 238

Linux 文件类信息统计指令(grep、awk、sort、uniq)

主要介绍通过cat awk grep sort uniq wc等等指令组合使用来完成统计工作

指尖疯客的博客 2047

Linux文本处理神器:Linux Upskill Challenge grep与管道命令实战

Linux Upskill Challenge是一个帮助新手掌握Linux技能的实用项目,其中**grep**和**管道命令**是文本处理的核心工具。通过本文的实战指南,你将快速学会如何用这些工具高效处理日志、筛选数据,让命令行操作变得简单而强大。 ## 为什么grep是Linux文本处理的黄金工具? 在Linux系统中,日志文件、配置文件和数据文件都是纯文本格式,而`grep`正是处理这些文

gitblog_01171的博客 1047

linux grep命令详解

简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟gr...

weixin_33676492的博客 83

linux-awk, grep文本分析工具。

1.grep 工作中常用的使用方式:(也可以配合正则,在shell篇里有讲) grep -rn "main(" ./ 从当前目录开始 查找有main( 的行 grep -vn "const" ./从当前目录开始 过滤有const 的行 2.awk:每行按 空格 or TAB分割,也可以使用正则 比如文件: 用法一: 比如选取 1 4列的数据 用法二: 比如选取 第 2列的数据(使用","进行分割) 这里有个问题怎么...

qq_44065088的博客 466

gnu linux中 使用,在Linux上使用GNU sed的方法

grep 命令grep在文件(或命令输出)中搜索指定正则表达式,并且在标准输出中输出匹配的行。样例显示文件 /etc/passwd 中用户 gacanepa 的信息,忽略大小写。#grep-i gacanepa /etc/passwd显示 /etc 文件夹下所有 rc 开头并跟随任意数字的内容。#ls-l /etc |grep rc[0-9]tr 命令使用技巧tr命令可以用来从标准输入中转换(...

weixin_35723924的博客 240

文本三剑客 之 grep

o ---------仅显示匹配到的字符串 只对文本内容进行处理就是正则表达式。-v ------------ 取反 就是过滤所有包含root的信息和字符。-f -------- 处理连个文件里的相同类容 第一个文件作为匹配条件。-i ----------- 忽略字符打大小写 大写也可以小写也可以。-c ------------显示匹配的行数 只有两行。-r -------- 只处理递归目录,但不处理软连接。-R -------- 只处理递归目录,但不处理软连接。

m0_71493671的博客 1861
上一篇: Iperf3详细安装方法和打流、实战教程
WUNEAL
博客等级 码龄8年 238粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值