shell编程--grep命令如何用?
发布时间 - 2017-06-20 00:00:00 点击率:次大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是:
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,不要把二者搞混了。切记!!!
通常有三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。下面我就为大家介绍grep命令的使用方法。
一、使用grep命令搜索文件中的内容
grep和egrep命令能够在一个或多个文件的内容中搜索某一特定的字符模式,也被称为正则表达式(regular expressions)。一个模式可以是一个单一的字符、一个字符串、一个单词或一个句子。
一个正则表达式是描述一组字符串的一个模式。正则表达式的构成是模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式。一个正则表达式既可以是一些纯文本文字,也可以是用来产生模式的一些特殊字符。为了进一步定义一个搜索模式,grep命令支持以下几种正则表达式的元字符,也称通配符。
ps:正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意
义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
c*:将匹配0个或多个字符c
.:将匹配任何一个且只能是一个字符(换行符除外)
[xyz]:将匹配方括号中的任意一个字符
[^xyz]:将匹配不包括方括号中的字符的所有字符
^:锁定行的开头
$:锁定行的结尾
在基本正则表达式中,如元字符*、+、{}、|、和()已经失去了它们原来的意义,如果要回复他们原本的含义要在之前冠以反斜线\,如\*、\+等。
grep命令是用来在每一个文件中或标准输出上搜索特定的模式。当使用grep命令时,包含一个指定字符模式的每一行都会被打印在屏幕上,grep命令的语法格式如下:
grep 选项 模式 文件名
其中,选项可以改变grep命令的搜索方式,除了-w选项外,其他的每个选项都可以在egrep和fgrep命令中使用。grep命令常用选项如下:
-c(count):仅列出包含模式的行数
-i(ignore):忽略模式中字母大小写
-l(list):列出带有匹配行的文件名
-n:在匹配行的前面列出行号
-v:列出没有匹配模式的行(取反)
-w:把表达式当做一个完整的单字来搜索,忽略那些部分匹配的行
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-A n :如果匹配成功,则将匹配行及其后n行一起打印出来
-B n :如果匹配成功,则将匹配行及其前n行一起打印出来
-C n :如果匹配成功,则将匹配行及其前后n行一起打印出来
ps:如果搜索的是多个文件,grep命令的结果只显示在文件中发现匹配模式的文件名;
如果搜索的是单个文件,grep命令的结果将显示每一个包含匹配模式的行。
上面就是grep命令的基本使用方法。但是有时一个简单的正则表达式无法定位你要搜索的内容,如要搜索同时满足模式一和模式二的数据行,这时egrep命令就可以派上用场。
egrep命令的语法格式和grep命令相同。但是egrep命令是用来在一个或多个文件的内容中利用扩展的正则表达式的元字符搜索特定的模式。扩展的正则表达式的元字符包含了grep命令中使用的正则表达式元字符的同时,还增加了一些额外的元字符,大致有下面几个:
+:匹配一个或多个前导字符
a|b:匹配a或b
(RE):匹配括号中的正则表达式RE
下面我将通过一些基本的例子来增进大家对grep和egrep命令用法的了解。鉴于grep命令中所有的选项egrep都能够使用(egrep更加强大),为方便起见我将使用egrep命令为大家演示:
例一:显示出文件/etc/passwd含有root的行
例二:输出/etc/passwd中任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容
例三:显示出/etc/passwd中有多少行含有nologin
例四:显示出/etc/passwd中那些行含有root,并将行号一块输出
例五:
新建用户abominable、abominate、anomie、atomize,编写正则表达式,将他们匹配出来
例六:新建用户Alex213sb、Wpq2222b、yH438PIG、egon666、egon过滤出用户名组成是字母+数字+字母的行
例七:显示出/etc目录下所有包含root的文件名
例八:过滤掉/etc/ssh/sshd_config内所有注释和所有空行
以上例子只是很小的一部分,大家只要勤加练习,一定很快就能掌握grep命令的使用啦 ^^
# 正则表达式
# 多个
# 行号
# 的是
# 是一个
# 则将
# 打印出来
# 我将
# 是用来
# 几个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
原生JS实现图片轮播切换效果
Laravel集合Collection怎么用_Laravel集合常用函数详解
Python面向对象测试方法_mock解析【教程】
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Mybatis 中的insertOrUpdate操作
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Laravel怎么实现模型属性的自动加密
linux top下的 minerd 木马清除方法
Linux后台任务运行方法_nohup与&使用技巧【技巧】
常州企业网站制作公司,全国继续教育网怎么登录?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Python进程池调度策略_任务分发说明【指导】
如何自定义建站之星模板颜色并下载新样式?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
iOS UIView常见属性方法小结
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
javascript基本数据类型及类型检测常用方法小结
黑客如何通过漏洞一步步攻陷网站服务器?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
如何在自有机房高效搭建专业网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Laravel API资源类怎么用_Laravel API Resource数据转换
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何正确选择百度移动适配建站域名?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Bootstrap整体框架之CSS12栅格系统
Laravel如何使用withoutEvents方法临时禁用模型事件
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
jquery插件bootstrapValidator表单验证详解
如何在Windows服务器上快速搭建网站?
昵图网官方站入口 昵图网素材图库官网入口
lovemo网页版地址 lovemo官网手机登录
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
java ZXing生成二维码及条码实例分享
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
手机软键盘弹出时影响布局的解决方法
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
教你用AI润色文章,让你的文字表达更专业
Laravel怎么上传文件_Laravel图片上传及存储配置
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
高端云建站费用究竟需要多少预算?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
如何快速查询网站的真实建站时间?

