谢烟客---------Linux之文本处理三剑客之egre、fgrep

egrep是grep的另一种模式,用-E选项(启用或关闭命令的某个或某些功能),启用扩展正则表达式引擎功能,使用扩展正则表达式的字符和纯文本字符组合的PATTERN,对文本流逐行匹配检查,将匹配到的字符串所在的行显示至标准输出

fgrep,grep -F选项,关闭正则表达式引擎功能,以纯文本字符组合为PATTERN,基于独有的算法,对文本进行高效的匹配检查,将匹配到的字符串所在的行显示至标准输出

egrep命令

[[email protected] ~]# type egrep
egrep is aliased to `egrep --color=auto‘
[[email protected] ~]# which --skip-alias egrep
/usr/bin/egrep
[[email protected] ~]# egrep --help          #获取使用帮助
Usage: grep [OPTION]... PATTERN [FILE]...

-E, --extended-regexp #ERE
#其帮助内容同grep命令的使用内容

-E选项, grep -E 相当于 egrep

# grep -E ‘^root\b‘ /etc/passwd
# egrep ‘^root\b‘ /etc/passwd


扩展正则表达式字符

字符匹配

匹配次数

位置锚定

字符匹配

1) .     任意单个字符

2) []   指定范围内的任意单个字符,  [abc] a或b或c

3) [^] 指定范围外的任意单个字符

使用示例

[[email protected]z ~]# vim a.txt #vim是一个文本编辑命令,进入后按i键,才可编写文本,编写完毕后。按esc键,再按shift 加 : 键,输入wq加Enter键即可。
how are you?
hwo old are you?
HOW ARE YOU?
HWO OLD ARE YOU?
root:x:0:0:root:/root:/bin/bash

.   匹配任意单个字符

# egrep  ‘r..t‘ a.txt

[]   匹配指定范围内的任意单个字符,  [abc] a或b或c

# egrep  ‘[eFH]‘ a.txt

[^] 表示指定范围外的任意单个字符, [^abc] 非a和b和c

# egrep  ‘[^eFH]‘ a.txt

次数匹配 前面单个字符出现的次数

1)*  匹配前面单个字符,出现0、1或多次

2)?  匹配前面单个字符,出现0或1次

3)+  匹配前面单个字符,出现至少1次,>=1次

4){m}  精确匹配前面单个字符m次

5){m,} 匹配前面单个字符,至少m次

6){,n} 至多n次

7){m,n}  至少m次,至多n次

使用示例

[[email protected] ~]# vim output_delimiter.txt
ab
cb
a12b
aab
abb
abababababababab

*  匹配前面单个字符,出现0、1或多次

# egrep ‘a*b‘ output_delimiter.txt

.* 匹配 . 任意次,任意单个字符任意次,任意长度任意字符,(glob中的*)

# egrep  ‘r.*t‘ a.txt

?  匹配前面单个字符,出现0或1次 (基本正则表达式中 \? )

# egrep ‘a?b‘  output_delimiter.txt 
# grep ‘a\?b‘  output_delimiter.txt

+  匹配前面单个字符,出现至少1次,>=1次 (基本正则表达式中 \+ )

# egrep ‘a+b‘  output_delimiter.txt
# grep ‘a\+b‘  output_delimiter.txt

{m}  精确匹配前面单个字符m次 (基本正则表达式中 \{m\} )

# egrep ‘a{3}b‘ output_delimiter.txt
# grep ‘a\{3\}b‘ output_delimiter.txt

{m,} 匹配前面单个字符,至少m次 (基本正则表达式中 \{m,\} )

# egrep ‘a{3,}b‘ output_delimiter.txt
# grep ‘a\{3,\}b‘ output_delimiter.txt

{,n} 匹配前面单个字符至多n次 (基本正则表达式中 \{m,\} )

# egrep ‘a{,2}b‘ output_delimiter.txt
# grep ‘a\{,2\}b‘ output_delimiter.txt

{m,n}  匹配前面单个字符至少m次,至多n次 (基本正则表达式中 \{m,n\} )

# egrep ‘a{3,6}b‘ output_delimiter.txt
# grep ‘a\{3,6\}b‘ output_delimiter.txt

位置锚定 ‘期望匹配的字符必须出现在某个位置’

1)^ 行首锚定,用于模式最左侧。由正则表达式所匹配到的字串符必须出现在行首

2)$ 行尾锚定,用于模式最右侧。由正则表达式所匹配到的字串符必须出现在行尾

3)^pattern$: 整行只能匹配此模式

4)匹配空白行: ^[[:space:]]*$ 空白可有任意次数

5)\< 或 \b 词首锚定,用于单词模式的左侧

6)\> 或 \b 词尾锚定,用于单词模式的右侧

7) \<PATTERN\> 或 \bPATTERN\b 匹配整个单词,用于单词左右两侧

8)分组,后向引用 ()

^ 行首锚定,用于模式最左侧。由正则表达式所匹配到的字串符必须出现在行首

# grep -E ‘^root‘ /etc/passwd

$ 行尾锚定,用于模式最右侧。由正则表达式所匹配到的字串符必须出现在行尾

# grep -E ‘/bin/bash$‘ /etc/passwd

^pattern$: 整行只能匹配此模式

# grep -E -c ‘^$‘ /etc/init.d/functions            #匹配空行
-c 显示匹配到的字串所在行的所有行的行数

匹配空白行: ^[[:space:]]*$ 空白可有任意次数

# grep -E -c ‘^[[:space:]]*$‘ /etc/init.d/functions  #匹配可为空行或有空白字符的行

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

# grep -E ‘\broot‘ /etc/passwd

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

# grep -E ‘root\b‘ /etc/passwd

\<PATTERN\> 或 \bPATTERN\b 匹配整个单词,用于单词左右两侧

# grep -E ‘\broot\b‘ /etc/passwd

( ) 分组, (基本正则表达式中 \(\) ) 将任意个字符当前同一个组件

# cat grep.txt 
abxy
xxxxxxy
xyxyxyxyabcxy
# grep -E ‘(xy)+‘ grep.txt

注意:

表示字符串本身时,如果使用的命令使用的正则表达式字符,有\,则不用\; 如果没有\,则加\。

# grep -o ‘[[:alpha:]_]\+()‘ /etc/rc.d/init.d/functions  #正则表达式字符为 \( \)
grep -E -o ‘[[:alpha:]_]+\(\)‘ /etc/rc.d/init.d/functions #扩展正则表达式字符为 ( )

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

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


[cCat]    c或C或a或t

c|Cat     c或Cat

(c|C)at   cat 或 Cat

# vim dsdcI.txt
cat
Cat
c12
C123
at

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

# egrep ‘[cCat]‘ dsdcI.txt

2、c|Cat  匹配c 或 Cat

# egrep ‘c|Cat‘ dsdcI.txt

3、(c|C)at 匹配 cat 或 Cat

# egrep ‘(c|C)at‘ dsdcI.txt

时间: 2024-12-24 18:28:16

谢烟客---------Linux之文本处理三剑客之egre、fgrep的相关文章

谢烟客---------Linux之文本处理三剑客之grep

Linux之文本处理三剑客介绍 awk 名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母,它具备了一个完整的语言所应具有的几乎所有精美特性,AWK是一个解释器,三位创建者已将它正式定义为"样式扫描和处理语言".它允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能.Linux使用的是Gnu版本的AWK,gawk grep 全称"Global search REgular express

Linux中 文本处理命令 grep egrep fgrep的使

个人见解:我认为Linux中的文本处理命令 grep egrep fgrep命令 其实只要牢牢掌握grep就可以了 因为其他两个几乎是一样的 不一样的地方也很好区分 grep 基本使用方法: 使用方法 grep [选项] '表达式' #学习的时候没好好听 不知道自己写错没 为了这篇博文的通常 我还是先不看之前学习的视频了这里的常用选项有 -o -v -i -n -A -B -C -数字 -E [email protected]:~# grep -o '^root:' /etc/passwd #-

Linux入门——文本处理三剑客之grep

在Linux的使用过程中,需要处理大量的文本文件,这很符合Linux的哲学思想--一切皆文件.也是因为如此linux内置了文本处理三剑客,他们分别是grep.sed.awk.而三剑客在使用的过程中又有不同的侧重,今天将主要介绍的是文本过滤工具grep. 1.    grep命令的使用 grep 选项 关键字 文本路径 grep root  /etc/passwd grep --color=auto: 对匹配到的文本着色显示 (7里自动显示,6不显示) -i: 忽略字符大小写 -n:显示匹配的行号

Linux系统文本处理三剑客之awk

GNU awk: 文本处理三剑客:grep,sed,awk grep,egrep,fgrep:文本过滤工具:pattern sed:行编辑器 模式空间.保持空间 awk:报告生成器,格式化文本输出 gawk - pattern scanning and processing language 基本用法:gawk [options] 'program' FILE ... program:PATTERN{ACTION STATEMENTS} 语句之间用分号分隔 print,printf 选项: -F

Linux 篇 | 文本处理三剑客之SED

文本处理三剑客之SED sed不仅可以像grep过滤文件,查找想要的内容,还可以更改文件,这是grep做不到的. 一.sed介绍 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环.如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这

linux文本处理三剑客之grep家族及其相应的正则表达式使用详解

一.Linux文本处理三剑客.grep家族和正则表达式介绍 Linux上文本处理三剑客: grep(egrep, fgrep):文本搜索工具:基于"pattern(过滤条件)"对目标文本进行逐行搜索操作: sed:Stream Editor,流编辑器行编辑工具:文本编辑工具: awk:GNU awk,文本格式化工具:文本报告生成器: grep家族: grep: Global search REgular expression and Print out the line,支持使用基本正

文本处理三剑客之-grep

文本处理工具: Linux上文本处理三剑客: grep:文本过滤工具(以模式过滤:pattern) sed:stream editor,流编辑器,文本编辑工具 awk:Linux上的实现为gawk,文本报告生成器(格式化文本) 正则表达式:regular expression  REGEXP 由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义, 而是用于表示控制或通配的功能: 分两类: 基本正则表达式:BRE 扩展正则表达式:ERE 元字符:\(hello[[:space:]]\

Liunx文本处理三剑客之awk

AWK是Aho, Weinberger, Kernighan三个开发者的首字母,最早用于Unix中,后用于Liunx中称为gawk(GUN awk),是Linux中文本处理三剑客之一,它是一个报告生成器,可以格式化文本并输出.下面所说的awk即gawk,那么我们一块来看一awk常用的用法: gawk - pattern scanning and processing language 字面翻译为:模式扫描及处理语言.也可以说他是一个简单的编程语言.工作原理如下: 按行读取文本,并根据指明输入时用

linux文本处理三剑客之grep

  一.linux文本处理三剑客介绍 linux中文本三剑客包括grep(egrep,fgrep),sed,awk,三者基本的功能如下: 工具名称 功能 grep,egrep,fgrep 文本过滤工具(搜索工具) sed stream editor, 流编辑器:文本编辑工具 awk 文本报告生成器 二.grep工具详解 1.grep的介绍: grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行