Linux grep命令使用介绍

目录

  • 1.命令格式
  • 2.命令功能
  • 3.命令参数
  • 4.正(规)则表达式
  • 5.示例
    • 1:查找指定进程
    • 2:查找指定进程个数
    • 3:从文件中读取关键词进行搜索
    • 4:从文件中读取关键词进行搜索 且显示行号
    • 5:从文件中查找关键词
    • 6:从多个文件中查找关键词
    • 7:grep不显示本身进程
    • 8:找出以w开头的行内容
    • 9:输出非w开头的行内容
    • 10:输出以on结尾的行内容
    • 11:显示包含on或者on字符的内容行
    • 12:显示当前目录下面以.txt 结尾的文件中的所有包含至少有7个连续小写字符的字符串的行


grep是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

1.命令格式


grep [option] pattern file

2.命令功能


用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

3.命令参数


  • -a —text #不要忽略二进制的数据。
  • -A<显示行数> —after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b —byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> —before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c —count #计算符合样式的列数。
  • -C<显示行数> —context=<显示行数>或-<显示行数> #除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> —directories=<动作> #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> —regexp=<范本样式> #指定字符串做为查找文件内容的样式。
  • -E —extended-regexp #将样式为延伸的普通表示法来使用。
  • -f<规则文件> —file=<规则文件> #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F —fixed-regexp #将样式视为固定字符串的列表。
  • -G —basic-regexp #将样式视为普通的表示法来使用。
  • -h —no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H —with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i —ignore-case #忽略字符大小写的差别。
  • -l —file-with-matches #列出文件内容符合指定的样式的文件名称。
  • -L —files-without-match #列出文件内容不符合指定的样式的文件名称。
  • -n —line-number #在显示符合样式的那一行之前,标示出该行的列数编号。
  • -q —quiet或—silent #不显示任何信息。
  • -r —recursive #此参数的效果和指定“-d recurse”参数相同。
  • -s —no-messages #不显示错误信息。
  • -v —revert-match #显示不包含匹配文本的所有行。
  • -V —version #显示版本信息。
  • -w —word-regexp #只显示全字符合的列。
  • -x —line-regexp #只显示全列符合的列。
  • -y #此参数的效果和指定“-i”参数相同。

4.正(规)则表达式


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。

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)

5.示例

1:查找指定进程

命令:

ps -ef|grep python

输出

ubuntu@VM-4-14-ubuntu:~$ ps -ef|grep python
root         744       1  0 Jul13 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         882       1  0 Jul13 ?        00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
ubuntu    181537  180987  0 09:17 pts/0    00:00:00 grep --color=auto python
ubuntu@VM-4-14-ubuntu:~$

2:查找指定进程个数

命令:

ps -ef|grep python -c
ps -ef|grep -c python

输出:

ubuntu@VM-4-14-ubuntu:~$ ps -ef|grep python -c
3
ubuntu@VM-4-14-ubuntu:~$ ps -ef|grep -c python
3
ubuntu@VM-4-14-ubuntu:~$

3:从文件中读取关键词进行搜索

命令:

cat file2.txt |grep -f file1.txt

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ cat file1.txt
java
ptthon
linux
android
ios
ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt
windows 10
windows 7
linux
c#
java
php
python
hello word
ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep file1.txt
ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep -f file1.txt
linux
java

说明:输出file2.txt文件中含有从file1.txt文件中读取出的关键词的内容行。

4:从文件中读取关键词进行搜索 且显示行号

命令:

cat file2.txt | grep -nf file1.txt

输出:


ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep -nf file1.txt
3:linux
5:java
ubuntu@VM-4-14-ubuntu:~/grep$

说明:输出 file2.txt 文件中含有从 file1.txt 文件中读取出的关键词的内容行,并显示每一行的行号。

5:从文件中查找关键词

命令:

grep 'linux' file1.txt

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ grep 'linux' file1.txt
linux
ubuntu@VM-4-14-ubuntu:~/grep$ grep 'java' file1.txt
java
ubuntu@VM-4-14-ubuntu:~/grep$ grep 'go' file1.txt

6:从多个文件中查找关键词

命令:

grep 'linux' file1.txt file2.txt

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ grep 'linux' file1.txt file2.txt
file1.txt:linux
file2.txt:linux
ubuntu@VM-4-14-ubuntu:~/grep$

说明:多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上”:”作为标示符。

7:grep不显示本身进程

命令:

ps aux|grep \[s]sh
ps aux | grep ssh | grep -v "grep"

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ ps aux|grep \[s]sh
root         883  0.0  0.3  12172  7404 ?        Ss   Jul13   0:05 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root      180849  0.0  0.4  13920  8968 ?        Ss   09:13   0:00 sshd: ubuntu [priv]
ubuntu    180986  0.0  0.2  14052  6040 ?        S    09:14   0:00 sshd: ubuntu@pts/0
ubuntu@VM-4-14-ubuntu:~/grep$

8:找出以w开头的行内容

命令:

cat file.txt |grep ^w

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt
windows 10
windows 7
linux
c#
java
php
python
hello word
ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep ^w
windows 10
windows 7
ubuntu@VM-4-14-ubuntu:~/grep$

9:输出非w开头的行内容

命令:

cat file.txt |grep ^[^w]

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep ^[^w]
linux
c#
java
php
python
hello word
ubuntu@VM-4-14-ubuntu:~/grep$

10:输出以on结尾的行内容

命令:

cat file.txt |grep on$

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep on$
python
ubuntu@VM-4-14-ubuntu:~/grep$

11:显示包含on或者on字符的内容行

命令:

cat file2.txt |grep -E "on|va"

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ cat file2.txt |grep -E "on|va"
java
python
ubuntu@VM-4-14-ubuntu:~/grep$

12:显示当前目录下面以.txt 结尾的文件中的所有包含至少有7个连续小写字符的字符串的行

命令:

grep '[a-z]\{7\}' *.txt

输出:

ubuntu@VM-4-14-ubuntu:~/grep$ grep '[a-z]\{7\}' *.txt
file1.txt:android
file2.txt:windows 10
file2.txt:windows 7
ubuntu@VM-4-14-ubuntu:~/grep$

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

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

相关文章

Android手机或平板设置浏览器的UserAgent

目录前言修改UserAgent实操华为手机自带浏览器Chrome&#xff08;谷歌浏览器&#xff09;QQ浏览器UC浏览器360浏览器前言 移动互联网盛行的当下&#xff0c;网页在电脑端和移动设备&#xff08;包括手机&#xff0c;平板以及一些基于Android系统定制的设备&#xff09;的适配主…

android jni fork()子进程不运行_Android高级面试谈谈Zygote的理解

Zygoto的作用Zygoto的作用有两个&#xff1a;1. 启动SystemServer2. 孵化应用进程SystemServer也是通过Zygoto来启动的&#xff0c;因为SystemServer需要Zygoto初始化好的一些系统资源&#xff0c;包括常用的类、JNI函数、共享库等等&#xff0c;这些资源直接从Zygoto继承过来对…

送给女朋友的情话

风拂鹊桥霓裳起 与卿漫话风雨里 初识 那一年端午 带着无比喜悦与期待 搭上去福州的火车 那一年端午 从福州到泉州 再到柴塔 连地名都好有神秘的感觉 迷糊的眼镜和疲倦的神情&#xff0c;刚好匹配得上 从此有了我们的传说 到了2022的七月七&#xff0c;还是一如既往 小特效 图…

Linux chmod命令使用介绍

目录1. 命令格式2. 命令功能3. 命令参数必要参数选择参数权限代号4. 使用实例1&#xff1a;增加文件所有用户组可执行权限2&#xff1a;同时修改不同用户权限3&#xff1a;去除文件的权限4&#xff1a;使用“”设置权限5&#xff1a;对一个目录及其子目录所有文件添加权限其他一…

lazada发货_Lazada发货用什么物流?费用要多少?

有买家到Lazada店铺下单之后&#xff0c;卖家就要安排订单发货了。Lazada发货的管控也是比较严格的&#xff0c;各位卖家要及时发货。小编也遇到不少新手卖家的咨询&#xff0c;问Lazada发货方式有哪些&#xff1f;以及发货流程是怎样的&#xff1f;下面针对这些问题&#xff0…

iOS app中不能跳转到商店更新

文章目录问题&#xff1a;跳转没有反应延申说明问题&#xff1a;跳转没有反应 如果app在苹果商店中的访问地址中带有中文&#xff0c;直接使用带中文url是跳转不成功的&#xff0c;需要对这个带中文的url进行UrlEncode编码才能正常跳转。 本文仅针对这种情况&#xff0c;或许还…

导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...

正值年中&#xff0c;老板交代把上半年各个地区提交的数据表格做个汇总。怎么办&#xff1f;一个地区一张表打开华南区的表&#xff0c;复制】-打开汇总表-【粘贴】再打开华北区的表【复制】-打开汇总表-【粘贴】……类似的工作任务还真不少各个单位上交的报名表各部门的生产计…

ddrelease64 黑苹果_High Sierra 黑苹果构建 微星X99A GAMING PRO CARBON+i7 6800k+GTX1070

回复文章须知&#xff1a;在本站评论区回复文章的时候&#xff0c;请务必正确填写好你的【电子邮件】地址&#xff0c;正确的填写【电子邮件】你将可以在博主/其他本站网友回复你的时候会收到邮件通知&#xff0c;以便及时查看回复内容&#xff01;本教程仅供小白安装使用&…

macOS/iOS WKWebview 下载文件

WKWebview 下载文件需要通过JS注入的方式来下载。js下载的数据是base64编码的&#xff0c;回到给原生后&#xff0c;原生需要反编码后才是原始文件的数据。 具体步骤&#xff1a; 配置WKWebview的js回调句柄&#xff08;标识&#xff09;创建WKWebview并添加到视图上实现WKScr…

vim插件自动补齐_给VIM添加REPL

REPL: 读取-求值-输出”循环&#xff08;英语&#xff1a;Read-Eval-Print Loop&#xff0c;简称REPL&#xff09;是一个简单的&#xff0c;交互式的编程环境。python作为一个动态语言&#xff0c;REPL在开发过程中起到了很大的作用。可是一直以来用vim写python没有一个很好的&…

Linux ping 详细介绍(win也适用)

多数情况下&#xff0c;能否访问某台电脑或服务器&#xff0c;很自然的使用ping xxx.xxx.xxx.xxx&#xff0c;这是最简单的ping形式&#xff0c;同时看到ping几个包之后就停止(windows)了,linux 会一直ping下去&#xff0c;直到按ctrlc或其他组合键。在windows平台或linux平台&…

巨一自动化工业机器人_工业机器人和自动化设备连接器

来源&#xff1a;大比特商务网 作者&#xff1a;Ann Thryft随着工业物联网(IIOT)不断扩大&#xff0c;给工厂带来了更多电子设备。 这些设备往往暴露在恶劣环境中&#xff0c;包括灰尘、油、液体和极端温度等。 同时&#xff0c;特别是随着协作机器人装配在工厂生产线上&#x…

pvrect r语言 聚类_R语言常用统计方法包+机器学习包(名称、简介)

上期帮大家盘点了一下R中常用的可视化包&#xff0c;这期将简要盘点一下关于统计分析与机器学习的R包&#xff0c;并通过简要介绍包的特点来帮助读者深入理解可视化包。本文作者为“食物链顶端”学习群中的小伙伴&#xff0c;感谢他们的分享。话不多说我们一起来看看吧&#xf…

rap2检测哪些接口在使用_Apifox for Mac(接口调试管理工具)

Apifox 是一款用于接口文档定义、Mock 数据、接口自动化测试等等方面的工具&#xff0c;它的功能高效好用&#xff0c;接口云端同步&#xff0c;实时更新。成熟的团队/项目权限管理&#xff0c;满足各类企业的需求。有需要的朋友赶快来使用吧&#xff01;Apifox 软件介绍软件开…

layui根据name获取对象_layui表格行合并;解决侧边固定栏合并

实现效果图:适配分页&#xff1b;全选&#xff1b;后台嵌套数据&#xff1a;获取数据后&#xff1b;渲染前操作&#xff1a;,done:function(res){if(res.data){for(var i 0;i<res.data.length;i){var trObj $([lay-id"table"] .layui-table-box).find([data-ind…

abap al设置单元格可编辑 oo_利用WPS做业务系统的超级编辑器

业务系统中的数据很笼统的分可以分为两大类&#xff0c;一个是结构化的&#xff0c;通常用关系型数据库来存储管理&#xff1b;一个是非结构化的&#xff0c;在这类数据中&#xff0c;可能最多、价值密度最大的就是文档。如何更便捷高效的生成或分析文档&#xff0c;就是业务系…

pyecharts怎么绘制散点图_pyecharts可视化和wx的结合

前言最近在研究 pyecharts 的用法&#xff0c;它是 python 的一个可视化工具&#xff0c;然后就想着结合微信来一起玩不多说&#xff0c;直接看效果&#xff1a;条形图.gif环境配置pip install pyechartspip install snapshot_seleniumpip install echarts-countries-pypkgpip …

jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包

DevOps目前并没有权威的定义&#xff0c;普遍认为&#xff0c;DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理&#xff0c;从而更快、更频繁地交付更稳定的软件。作者以 dukepy 系列项目中 dkimageapp 子项目&#xff08;关于图像处理…

如何计算_振动筛处理能力如何计算呢

振动筛在生活中的应用可谓设计到方方面面&#xff0c;大到煤炭开采筛分。小到果汁饮料&#xff0c;这些都离不开振动筛或者震动筛的身影。下面和道联合机械讲解一下如何计算振动筛的处理量&#xff0c;从而选购好的振动筛。振动筛的处理能力计算公式主要如下&#xff1a;1、处理…

springsession分布式登录被覆盖_拉勾 分布式 学习小结

分布式和集群分布式一定是集群&#xff0c;但是集群不一定是分布式&#xff08;可能是复制的&#xff09;集群是多个实例一起工作&#xff0c;分布式将一个系统拆分之后那就是多个实例分布式应用结构&#xff1a;Hash算法适用于在加密&#xff0c;数据存储和查找方面有hash表&a…