相信grep是UNIX和LINUX中使用最广泛的命令之一。grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。
本文主要讨论以下内容:
• grep(参数)选项。
• 匹配grep的一般模式。
• 只匹配字母或数字,或两者混用。
• 匹配字符串范围。
1. grep
grep 一般格式为:
grep [选项]基本正则表达式[文件]
2.双引号的使用
在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。这样做有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串,例如:“jetplane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果
将返回“文件不存在”的错误信息。在调用变量时,也应该使用双引号,诸如:grep“$MYVAR”文件名,如果不这样,将没有返回结果。
在调用模式匹配时,应使用单引号。
3.grep选项
常用的grep选项有:
-c 只输出匹配行的计数。
-i不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
4. grep举例
4.1 多文件查找
$ grep "sort"*.doc
或在所有文件中查询单词“ sort it”
$ grep "sort it" *
$ grep -c "48"data.f
$ 4
grep返回数字4,意义是有4行包含字符串“48”
显示满足匹配模式的所有行行数
[root@localhost /]# grep -n "48" data.f
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
显示不匹配的行
[root@localhost /]# grep -v "48" data.f
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
大小写敏感
[root@localhost /]# grep -i "sept" data.f
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。
[root@localhost /]# grep "48[34]" data.f
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,可以在方括号中使用^记号,表明查询在行首开始。
[root@localhost /]# grep '^[^48]' data.f
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
匹配任意字符
如果抽取以K开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
[root@localhost /]# grep 'K...D' data.f
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。
[root@localhost /]# grep '5..199[68]' data.f
483 Sept 5AP1996 USP 65.00 LVX2C 189
483 may 5PA1998 USP 37.00 KVM9D 644
模式出现机率
抽取包含数字4至少重复出现两次的所有行,方法如下:
[root@localhost /]# grep '4/{2/}' data.f
483 may 5PA1998 USP 37.00 KVM9D 644
使用grep匹配“与”或者“或”模式
[root@localhost /]# grep -E '216|219' data.f
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
使用grep匹配“与”或者“或”模式
[root@localhost /]# grep -E '216|219' data.f
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编程中很重要的工具。
分享到:
相关推荐
接下来,我们详细介绍grep命令的用法及其背后的知识点。 ### grep命令用法 grep命令的基本格式为: ```bash grep [选项] '搜索模式' 文件名 ``` 常用选项包括: - `-c`:仅显示包含模式的行的数量。 - `-i`:忽略大...
### 第二十四章:Shell 脚本 - 正则、grep、sed、awk 三剑客 #### 一、正则表达式及 grep **1. 概述** 正则表达式是一种强大的文本处理工具,它能够帮助用户方便地进行字符串的搜索、替换等操作。在 Linux 系统中...
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
Shell脚本是一种命令行解释器脚本,它通过组合一系列命令来自动化执行一系列任务,是Linux和Unix系统管理员不可或缺的工具。本珍藏版Shell脚本教程旨在为初学者提供基础知识的系统学习,包括脚本的编写、字符串处理...
16_基础shell编程-shell脚本介绍.PDF 17_基础shell编程-条件测试.PDF 18_基础shell编程-控制流结构.PDF 19_基础shell编程-shell 函数.PDF 20_基础shell编程-向脚本传递参数.PDF 21_基础shell编程-创建屏幕输出...
Swift-ShellKit是一个Objective-C框架,专为在Swift项目中执行shell脚本提供便利。它在iOS、macOS、tvOS和watchOS等Apple平台上,为开发者提供了与操作系统底层交互的强大工具。通过ShellKit,你可以轻松地在Swift...
Shell脚本是Linux/Unix操作系统中非常强大的工具,它允许用户编写一系列命令并自动执行它们,这些命令通常以bash(Bourne Again SHell)或其他类型的shell(如sh、csh、ksh等)编写而成。Shell脚本广泛用于系统管理...
本书的第3版很可能会包含最新的Shell脚本编程技术和实践,例如使用高级文本处理工具(如grep、sed、awk)来分析和处理数据、利用正则表达式来匹配和处理字符串、以及编写并发执行的脚本以提升性能等。 除此之外,...
本文将深入探讨如何使用Shell脚本实现服务器进程监控,这不仅有助于及时发现异常情况,还能提高系统的可用性和稳定性。接下来,我们将根据提供的文件信息详细解释其原理、步骤以及实际应用。 #### 一、写作背景 在...
本示例“shell脚本的demo”提供了一个基础的教程,旨在帮助初学者理解并掌握Shell脚本的基本语法和用法。下面将详细阐述相关知识点。 1. **Shell脚本简介**: Shell脚本是一种文本文件,包含了一系列命令,当执行...
Linux shell脚本指南通常会为初学者提供一系列基础概念和使用方法,帮助读者快速入门Linux shell脚本编程。它会包含以下知识点: 1. shell脚本基础:包括什么是shell脚本,如何编写一个简单的shell脚本,以及shell...
### Linux经典Shell脚本知识点详解 #### 一、使用awk去除C语言注释 在Linux环境中,使用awk脚本来处理文本或代码是非常常见的做法。在本案例中,我们看到一个awk脚本,其目的是用于去除C语言源代码中的注释。 **...
3. 字符串处理:在Shell脚本中,可以使用echo命令打印字符串,使用grep、awk等命令对字符串进行处理。例如,使用awk的-F选项来设置字段分隔符,使用print来输出特定字段。 4. 变量的读取和设置:Shell脚本中可以...
根据提供的文件内容,我们可以提取以下关于Shell脚本的重要...以上知识点详细阐述了Shell的基本概念、编写Shell脚本的方法、脚本执行方式、变量的使用与分类等重要信息,是学习和掌握Shell脚本编写不可或缺的知识点。
观看这样的视频教程可以帮助你通过实例学习Shell脚本的使用方法和技巧。 总的来说,掌握Shell脚本不仅可以提升你在Linux环境下的工作效率,也是成为一名合格的系统管理员或开发者所必需的技能。通过不断练习和学习...
通过学习这些工具的使用方法,我们可以在日常工作中更加高效地处理文本数据。无论是查找特定的文本、提取文件中的某一行或多行,还是对文件中的数据进行排序,这些工具都能帮助我们轻松完成任务。掌握了这些基础命令...
在IT行业中,Shell脚本是一种极其重要的工具,尤其在Linux和Unix系统中广泛使用。它是一种解释型的编程语言,允许用户通过命令行接口执行一系列命令,自动化日常任务,提高工作效率。标题“脚本shell写的,一些工作...
Shell脚本是Linux操作系统中的一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务。这本"Shell脚本编程入门100例"教程针对初学者,提供了丰富的实例,旨在帮助读者快速掌握Shell脚本的基本概念和...