shell脚本系列-grep用法总结
相信grep是UNIX和LINUX中使用最广泛的命令之一。grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。
本文主要讨论以下内容:
• 匹配grep的一般模式。
• 只匹配字母或数字,或两者混用。
• 匹配字符串范围。
1. grep
grep [选项]基本正则表达式[文件]
2.双引号的使用
在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。这样做有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串,例如:“jetplane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果
将返回“文件不存在”的错误信息。在调用变量时,也应该使用双引号,诸如:grep“$MYVAR”文件名,如果不这样,将没有返回结果。
在调用模式匹配时,应使用单引号。
3.grep选项
常用的grep选项有:
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
4. grep举例
4.1 多文件查找
或在所有文件中查询单词“ sort it”
$ grep "sort it" *
$ 4
grep返回数字4,意义是有4行包含字符串“48”
显示满足匹配模式的所有行行数
1:48 Dec 3BC1997 LPSX 68.00 LVX2A 138
2:483 Sept 5AP1996 USP 65.00 LVX2C 189
5:484 nov 7PL1996 CAD 49.00 PLV2C 234
6:483 may 5PA1998 USP 37.00 KVM9D 644
显示不匹配的行
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
大小写敏感
483 Sept 5AP1996 USP 65.00 LVX2C 189
216 sept 3ZL1998 USP 86.00 KVM9E 234
5.正则表达式
5.1 模式匹配
假定要抽取代码为484和483的城市位置,上一章中讲到可以使用[ ]来指定字符串范围,这里用48开始,以3或4结尾,这样抽出484或483。
483 Sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
不匹配行首 如果要抽出记录,使其行首不是48,可以在方括号中使用^记号,表明查询在行首开始。
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
匹配任意字符
如果抽取以K开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
483 may 5PA1998 USP 37.00 KVM9D 644
日期查询
一个常用的查询模式是日期查询。先查询所有以5开始以1996或1998结尾的所有记录。使用模式5..199[6,8]。这意味着第一个字符为5,后跟两个点,接着是199,剩余两个数字是6或8。
483 Sept 5AP1996 USP 65.00 LVX2C 189
483 may 5PA1998 USP 37.00 KVM9D 644
模式出现机率
抽取包含数字4至少重复出现两次的所有行,方法如下:
483 may 5PA1998 USP 37.00 KVM9D 644
使用grep匹配“与”或者“或”模式
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
使用grep匹配“与”或者“或”模式
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
6 类名
[[:upper:]] [A-Z]
[[:lower:]] [a-z]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] 空格或tab键
[[:digit:]] [0-9]
[[:alpha:]] [a-zA-Z]
7 总结
希望大家已经理解了grep的灵活性,它是一个很强大而流行的工具,像其他许多UNIX工具一样,已经被使用在DOS中。如果要通过文件快速查找字符串或模式, grep是一个很好的选择。简单地说, grep是shell编程中很重要的工具。
shell脚本系列-grep用法总结相关推荐
- Shell脚本之grep用法
grep:强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来. 用法: grep [选项] '搜索字符串' filename 选项: -a:以文本文件方式搜索 -c:计算找到的符合行的 ...
- 详细介绍Linux shell脚本系列基础学习(列表)
本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...
- shell脚本系列:1、shell、bash和shell脚本
shell脚本系列:1.shell.bash和shell脚本 文章目录 shell脚本系列:1.shell.bash和shell脚本 1. 前言 2. shell.Bash.shell script简 ...
- linux shell 博客,【博客侠】Linux Shell脚本系列:开始上手(1)
看标题大家应该知道,这是一个关于 Linux Shell 脚本的系列文章.通过本系列文章希望帮助 Linux 初学用户快速开始上手编写 Shell 脚本,能够利索的对脚本进行测试和使用. 在接下来的首 ...
- Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算
这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...
- shell脚本系列:5、shell参数
shell脚本系列:5.shell参数 文章目录 shell脚本系列:5.shell参数 1. 位置参数 2. 特殊参数 2.1 参数* 2.2 参数@ 2.3 参数# 2.4 参数? 2.5 参数- ...
- shell脚本之echo用法
shell脚本之echo用法 1.echo常见转义符号 符号 功能描述 \b 退格键(backspace) \f 换行但光标仍停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首但不换行 \ ...
- 1025.在线视频—shell脚本系列讲座(三)千机变—脚本变量
shell脚本系列讲座有以下主题 (一)shell脚本与应用示例 (二)三剑客-文本处理 (三) 千机变-脚本变量 (四)向左向右-条件选择 (五)望山跑死马-循环 (六)脚本函数与任务调度 (七)脚 ...
- shell脚本中的$用法
shell脚本中的$用法 变量 含义 $0 shell脚本的文件名 $1 ~ $n 添加到shell脚本中的各参数: 即执行shell脚本时后跟的内容: $1为第1参数,$2为第2参数 $? shel ...
最新文章
- sql server面试题
- python设计一个学生类求最高分_设计一个学生类班级类
- 因为一个跨域请求,我差点丢了饭碗!
- python range从大到小排列_python 十大经典排序算法
- 使用之location和rewrite用法
- jquery是库还是框架?
- 图像处理作业 第8次
- 如何创建Java程序
- pandas读写各种类型数据
- 哈佛大学计算机生物科学,生命科学专业
- 如何绘制逻辑图 — 3.要素的属性:粒度与分层
- c++ winpcap开发(3)
- go-文件读写-db
- PyCharm下解决Unresolved Reference问题
- centos7安装mysql5.7视频_Centos7安装MySQL5.7版本详细步骤
- php5.3之后如何加载zend
- js深入研究之神奇的匿名函数类生成方式
- Java项目开发工具汇总
- 在命令行英雄的浏览器大战中,JavaScript令人惊讶地崛起
- 推荐一款基于bootstrap的漂亮的前端模板——inspinia_admin(国内翻译的叫 H+后台主题UI框架)