Linux三剑客之grep 与 egrep

grep:

Linux上文本处理三剑客

1 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep)
2 sed:stream editor,文本编辑工具;
3 awk:Linux上的实现gawk,文本报告生成器;

grep: Global search REgular expression and Print out the line.

作用:

文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

模式:由正则表达式字符及文本字符所编写的过滤条件;

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能;

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep -E, egrep

正则表达式引擎

 1 选项:
 2                             --color=auto: 对匹配到的文本着色显示;
 3                             -v: 显示不能够被pattern匹配到的行;
 4                             -i: 忽略字符大小写;
 5                             -o: 仅显示匹配到的字符串;
 6                             -q: 静默模式,不输出任何信息;
 7                             -A #:after, 后#行
 8                             -B #: before, 前#行
 9                             -C #:context, 前后各#行
10
11                             -E:使用ERE;

基本正则表达式元字符:

字符匹配:

.:  匹配任意单个字符;

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;

*:匹配前面的字符任意次;

例如: grep "x*y"

abxy

xay

xxxxxxy

贪婪模式

.*:任意长度的任意字符;

\?:匹配其前面的字符0或1次;即前面的可有可无;

\+:匹配其前面的字符至少1次;

\{m\}:匹配前面的字符m次;

\{m,n\}:匹配前面的字符至少m次,至多n次;

\{0,n\}:匹配前面的字符至多n次;

\{m,\}:匹配前面的字符至少m次;

位置锚定:

^:行首锚定;用于模式的最左侧;

$:行尾锚定;用于模式的最右侧;

^PATTERN$: 用于模式匹配整行;

^$: 空行;

^[[:space:]]*$

\< 或 \b:词首锚定;用于单词模式的左侧;

\> 或 \b:词尾锚定;用于单词模式的右侧;

\<PATTERN\>:匹配整个单词;

分组:

\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;

\(xy\)*ab

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...

\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

\(ab\+\(xy\)*\):

\1: ab\+\(xy\)*

\2: xy

后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)

练习实例:

1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

1 # grep ‘^{s|S}‘ /proc/meminfo
2 # grep -i ‘^s‘  /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行;

1 # grep -v ‘/bin/bash$‘  /etc/passwd

3、显示/etc/passwd文件中ID号最大的用户的用户名;

1 # sort -t: -k3 -n /etc/passwd | tail -1 | cut -d: -f1

4、如果用户root存在,显示其默认的shell程序;

1 # id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7

5、找出/etc/passwd中的两位或三位数;

1 # grep "\<[0-9]\{2,3\}\>" /etc/passwd

6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存非空白字符的行;

1 # grep "^[[:space:]]\+[^[:space:]]" /etc/rc.d/rc.sysinit

7、找出"netstat -tan"命令的结果中以‘LISTEN‘后跟0、1或多个空白字符结尾的行;

# netstat -tan | grep "LISTEN[[:space:]]*$"

8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;

1 # grep "^\([[:alnum:]]\+\>\).*\1$" /etc/passwd

egrep及扩展的正则表达式

egrep = grep -E

扩展正则表达式的元字符:

字符匹配:

.

[]

[^]

次数匹配:

*

?: 0或1次;

+:1次或多次;

{m}:匹配m次;

{m,n}:至少m,至多n次;

锚定:

^

$

\<, \b

\>, \b

分组:

()

后向引用:\1, \2, ...

或者:

a|b

C|cat: C或cat

练习实例:

1、显示当前系统root、centos或user1用户的默认shell和UID;

1 # grep -E ‘^(root|centos|user1)\>‘ /etc/passwd | cut -d: -f1,3,7

2、找出/etc/rc.d/init.d/functions文件(centos6)中某单词后面跟一个小括号的行;

# grep -E -o "^[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions

3、使用echo输出一绝对路径,使用egrep取出其基名;

1 # echo "/mnt/sdc" | grep -E -o "[^/]+/?$" | cut -d"/" -f1
时间: 2024-10-10 12:44:00

Linux三剑客之grep 与 egrep的相关文章

Linux三剑客之grep、egrep及正则表达式使用详解

Linux三剑客是Linux中非常强悍的文本处理工具,掌握三剑客,文处理已想必会有三剑在手,天下我有的感觉,三剑客之grep家族擅长文本搜索,支持以正则表达式进行文本搜索,使得grep非常强悍,以下内容就grep,egrep和正则表达式展开 Linux文本工具三剑客:        grep.egrep.fgrep:文本搜索工具 sed:流编辑器,也是行编辑器 awk:文本格式化工具,文版报告生成器 正则表达式:是由一类字符所书写出的模式(pattern) 作用:配合支持使用正则表达式的文本搜索

Linux三剑客之grep

linux三剑客之grep grep命令是一个强大的文本搜索工具,全称是Global Regular Expression Print,它能使用正则表达式搜索文本,并把匹配的行打印出来,使用权限是所有用户 1.使用格式 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] grep 关键词 文本文件 2.比较常用的参数 -c:仅显示找到的次数 -i:忽略大小写 -n:显示行号 -o:只显示

不看绝对后悔的Linux三剑客之grep实战精讲

三.Linux三剑客之grep命令精讲 [命令简介]Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. [功能说明]grep***** ==擅长过滤器,把想要的或者不想要的分离开.Linux三剑客 老三. [用法格式]grep [选项]... PATTERN [FILE]... [参数选项][options]主要参数

Linux中的grep、egrep及相应的正则表达式和用法

在Linux系统当中,处理文本有三个常用的工具,俗称文本处理三剑客,grep就是其中之一. grep是一种强大的文本搜索工具,它的全称是:Globally search a Regular Expression and Print.工作原理是基于正则表达式引擎按给定的"pattern"对文本进行搜索过滤操作,并把匹配的行打印出来.因此了解要grep的用法我们可以从两方面着手,1:grep命令的用法,2:正则表达式. 1,grep命令的使用方法 首先我们可以使用man命令查看一下grep

Linux 三剑客之一--&gt;grep

======================================================================================== * ######------ Linux 正则表达式 ------###### * ######------ 三剑客 grep 文本过滤 ------######*/==============================================================================

llinux文本三剑客之grep、egrep及相应的正则表达式和用法

Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客

Linux三剑客之grep伐木累(正则表达式)

一.Linux文本处理三剑客 Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.今天主要给大家介绍一下三剑客中的第一剑:grep伐木累. 二.grep是什么? grep 全称(Globally search a Regular Expression and Print)是一个文本搜索工具,基于"pattern"(这里指的是过滤模式,多指正则表达式)对给定的文本进行搜索. grep家族: grep:支持使用基本正则表达式: egrep:支持

Linux 的正则表达式grep、egrep

阅读目录 简单介绍 正则表达式的一些选项及作用 基本正则表达式 扩展正则表达式 在运维中正则表达式对于笔者来说必须学习和掌握的,它是一个难点!首先它的元字符很多,组合的方法也是各种各样的,当然每个人学习和理解方法不一样,在其中遇到的问题也不一样,在Linux中想学习正则表达式,首先要学会的是grep以及egrep命令的使用 下面我会列出一小部分实例! 简单介绍 grep.egrep是一种文本搜索的工具,可以根据用户指定的模式对目标文本进行搜索过滤,显示出被模式匹配到的行 正则表达式分为两类: 基

Linux三剑客之grep常用参数详细总结

三剑客grep总结 grep  : Linux三剑客老三      过滤需要的内容 参数: grep一般常用参数: -a :在二进制文件中,以文本文件的方式搜索数据 -c :计算找到 ’ 搜索字符串 ‘ 的次数 -o :仅显示出匹配regexp的内容(用于统计出现在文中的次数) -i  :忽略大小写的不同,所以大小写视为相同*************** -n :匹配的内容在其行首显示行号************** -v :反向选择,即显示没有 ’ 搜索字符串 ‘ 内容的那一行****** -