正则表达式-grep命令

1. 基本的正则表达式  grep 

^a      表示匹配以a开头的行;

a$ 表示匹配以a结尾的行;

^$ 表示空白行;

. 表示匹配任意一位字符;

* 表示匹配其前面字符的任意次(可以是0次);

.* 表示匹配任意字符任意次;

\?     表示匹配前面字符1次或0次;

a\{3,5\}表示匹配前面字符的至少3次,最多5次;

[a-z]   表示匹配任意一个字母;

[a-Z]   表示匹配任意一个字母(不区分大小写);

[1-9] 表示匹配任意数字;

[^1-9]  表示匹配不是数字;

[a-Z0-9]表示匹配数字和所有字母;

[[:alnum:]] 表示匹配数字和所有字母;

[[:space:]] 表示匹配空格;

[[:punct:]] 表示匹配标点符号

\<或\b 表示匹配<符号后面的单词,必须做为首部出现  比如  \<abc

\>或\b  表示匹配>符号前面的单词,必须做为尾部出现  比如   abc\>

\( \)   表示分组  一般和后向引用合用;

后向引用

\1  引用前面第一个分组

\2  引用前面第二个分组

\3  引用前面第三个分组

[[email protected] ~]# grep "\(a\)\(b\)c\1xc\1\2c" test.txt

abcaxcabc

2. 扩展的正则表达   egrep或grep -E

+ 表示匹配前面字符至少1次;

? 表示匹配前面字符1次或0次;

{} 表示匹配前面字符的多少次;

()      表示分组

|       表示或者

3.grep命令 

-i     不区分大小写

-v     取反

-o     显示字符串本身

-n     输出时显示行号

-E     支持扩展正则表达式    等效 egrep

-A     显示匹配字符的之后N行

-B     显示匹配字符的之前N行

-C     显示匹配字符的前后N行

-r     递归匹配全部文件

4.基本正则表达式应用举例

1) 查询/var/log/message文件中包含kernel的信息

[[email protected] ~]# grep kernel /var/log/messages

2) 查询/etc/passwd文件中以root开头的行

[[email protected] ~]# grep "^root" /etc/passwd

root:x:0:0:root:/root:/bin/bash

3) 查询/etc/passwd文件中以nologin结尾的行,并计算行数

[[email protected] ~]# grep "nologin$" /etc/passwd

4) 查询/usr/share/dict/words 文件中以a或b开头的行

[[email protected] ~]# grep "^[a,b]" /usr/share/dict/words

5) 查询/usr/share/dict/words文件中以不以 c,d,e,f(忽略大小写)开头的行,并计算行数

[[email protected] ~]# grep "^[^c-f]" /usr/share/dict/words | wc -l

6) 在/etc/passwd中选出所有不包含nologin 的行。

[[email protected] ~]# grep -v "nologin" /etc/passwd

7) 查询/usr/share/dict/words文件中以a开头且第三个字符是z的行

[[email protected] ~]# grep "^a.z" /usr/share/dict/words

8)查询/usr/share/dict/words文件中以a开头且后面跟随5个字符的行

[[email protected] ~]# grep "^a.\{5\}$" /usr/share/dict/words

9)查询你的系统的CPU有几个核

[[email protected] ~]# grep "processor" /proc/cpuinfo  | wc -l

10) 查询/usr/share/dict/words文件中总共10位,且以z结尾的行。

[[email protected] ~]# grep "^.\{9\}z$" /usr/share/dict/words

11) 查询/usr/share/dict/words文件中以 a,b,c开头,且第5位只能为s的行

[[email protected] ~]# grep "^[a,b,c]...s" /usr/share/dict/words

12) 查询/usr/share/dict/words文件中所有以两位数字开头的行

[[email protected] ~]# grep "^[1-9][1-9]" /usr/share/dict/words

13) 查询/usr/share/dict/words文件中以a,b,c开头的且不以a,b,c结尾行

[[email protected] ~]# grep "^[a,b,c].*[^a,b,c]$" /usr/share/dict/words

14)查询/usr/share/dict/words文件中以小写字母开头,以大写字母结尾的行

[[email protected] ~]# grep "^[a-z].*[A-Z]$" /usr/share/dict/words

5.扩展正则表达式

1)去除a.txt 空白行与#开头的行

[[email protected] ~]# egrep -v "^$|^#" a.txt

2)搜索god good goood等字符串

[[email protected] ~]# egrep "go{1,3}d" a.txt

3)搜索gd 或者 god字符串的行

[[email protected] ~]# egrep "go?d" a.txt

时间: 2024-10-20 22:13:21

正则表达式-grep命令的相关文章

基本正则表达式grep命令使用

grep(Global search REgular expression and Print out the line.)是一个文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. 使用man命令查看grep使用语法格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]  其中option为grep命令的选项,pattern为要匹配的简单字符串

Linux &nbsp; &nbsp; grep命令,正则表达式

grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来; 正则表达式 正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作; 主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA; DFA

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

正则表达式grep、egrep、fgrep

日期: 2015年08月27日 正则表达式: (RegularExpression,在代码中常简写为rex.regexp或RE) 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.通常被用来检索.替换符合某个模式的文本. 正则表达式是指一类字符书写的模式(pattern)这些字符成为元字符,元字符不表示其字面意义,而用于表示通配或控制功能. 正则表达式包括两类:基本正则表达式,扩展正则表达式 grep命令只支持基本正则表达式: egrep支持扩展正则表达式("e" 表

正则表达式和grep命令的用法

正则表达式和grep命令的用法: 一.正则表达式: 正则表达式(也称为regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称之为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gr

grep命令以及正则表达式,算数运算.

最近一段时间一直在学习算术运算和正则表达式以及条件判断,连续看了四五遍,基本概念已经能够搞清楚了,实际操作中容易把正则表达式和算术运算以及条件判断混淆.看来还是要勤加联系.今天终于是有勇气来总结这两周的学习.在这之前,因为在练习这些逻辑概念性的知识经常会用到grep命令.首先介绍一下grep. 格式:grep [options] 'PATTERN' file,... grep: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示文件中能够被模式所匹配到的行. 模式PATTERN:指

正则表达式2&mdash;&mdash;grep命令

grep是Global search Regular Expression and Print out the line的简称. 1. grep命令基本用法 命令格式: grep [选项][模式][文件-] 选项 意义 -c 只输出匹配行的数量 -i 搜索时忽略大小写 -h 查询多文件时不显示文件名 -l 只列出符合匹配的文件名,而不列出具体匹配行 -n 列出所有匹配行,并显示行号 -s 不显示不存在或无匹配文本的错误信息 -v 显示不包含匹配文本的所有行 -w 匹配整词 -r 递归搜索,不仅搜

grep命令以及正则表达式

grep以及正则表达式 Grep 根据模式(文本字符和正则表达式的元字符组合而成匹配条件)搜索文本,并将符合模式的文本行显示出来. 1.1grep家族: grep:基本正则表达式使用的命令 egrep:扩展正则表达式使用的命令 fgrep(fast grep):不支持正则表达式,在没有正则表达式的字符串中的使用效率非常高,cup资源消耗少 1.2grep命令格式 grep  [options] PATTERN [FILE...] 1.2.1option -i忽略大小写 --color:对匹配出来

grep命令与正则表达式(过滤)一

首先,我们来了解grep命令,grep (global search regular expression and printing),全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Linux中的grep命令包括.grep, egrep和fgrep .egrep是grep的扩展,支持更多的re元字符,fgrep就是fast grep,搜索字符比较快,但不支持正则表达式. 然后,我们再来熟悉一下grep命令,其命令格式为:grep [