文本进行搜索:grep egrep fgrep

grep名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印),是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。

命令名称:grep, egrep, fgrep
命令作用:print lines matching a pattern
命令用法:grep [OPTIONS] PATTERN [FILE...]
          grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
参数选项:-v  反向选取
          -o  仅显示匹配的字符串,而非字符串所在的行
          -i  忽略字符串大小写
          -E  支持只用扩展正则表达式
          -A n  显示匹配到字符串之后的n行
          -B n  显示匹配到字符串之前的n行
          -C n  显示匹配到字符串前后的n行
          --color  高亮显示匹配到的字符串

常见字符集:

[:space:] 所以空白字符
[:punct:] 所以标点符号
[:lower:] 所有小写字母
[:upper:] 所以大写字母
[:digit:] 所有数字
[:alnum:] 所有大小写字母和数字
[:alpha:] 所有大小写字母

文件名通配:

* 任意长度的任意字符
? 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围以外的任意单个字符

基本正则表达式:

字符匹配 . 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
次数匹配 * 前面的字符可以出现任意次
\? 前面的字符出现0次或者1次
\{m\} 前面的字符出现m次
\{m,n\} 前面的字符出现n次~m次
\{m,\} 前面的字符至少出现m次
\{0,n\} 前面的字符至多出现n次
.* 任意长度的任意字符
位置锚定 ^ 行首锚定,写在模式的最左侧
$ 行尾锚定,写在模式的最右侧
^$ 匹配空行
\< 词首锚定,出现于单词左侧
\> 词尾锚定,出现于单词右侧
分组 \(\) 匹配一个分组
\1 引用第1个括号所匹配到的内容,而非模式本身
\2
引用第2个括号所匹配到的内容,而非模式本

扩展正则表达式:

字符匹配 . 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
次数匹配 * 前面的字符可以出现任意次
? 前面的字符出现0次或者1次
+ 前面的字符至少出现1次
{m} 前面的字符出现m次
{m,n} 前面的字符出现n次~m次
{m,} 前面的字符至少出现m次
{0,n} 前面的字符至多出现n次
锚定 ^ 行首锚定,写在模式的最左侧
$ 行尾锚定,写在模式的最右侧
\<,\b 词首锚定,出现于单词左侧
\>,\b 词尾锚定,出现于单词右侧
^$ 匹配空行
分组 () 匹配一个分组
\1 引用第1个括号所匹配到的内容,而非模式本身

grep练习:

1、显示/proc/meminfo文件中以大写或小写S开头的行;

[[email protected] ~]# grep -i ‘^s‘ /proc/meminfo

[[email protected] ~]# grep -E ‘^(S|s)‘ /proc/meminfo

[[email protected] ~]# grep ‘^[S|s]‘ /proc/meminfo

2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

[[email protected] ~]# grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

3、显示/etc/passwd文件中其默认shell为/bin/bash并且ID号最大的用户;

[[email protected] ~]# grep ‘/bin/bash‘ /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1

4、找出/etc/passwd文件中的一位数或两位数;

[[email protected] ~]# grep ‘\<[0-9][0-9]\?\>‘ /etc/passwd

[[email protected] ~]# grep ‘\<[0-9][0-9]\{0,1\}\>‘ /etc/passwd

5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

[[email protected] ~]# grep ‘^[[:space:]]\{1,\}‘ /boot/grub/grub.conf

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

[[email protected] ~]# grep --color ‘^#[[:space:]]\{1,\}[^[:space:]]\{1,\}‘ /etc/rc.d/rc.sysinit

7、找出netstat -tan命令执行结果中以‘LISTEN‘结尾的行;

[[email protected] ~]# netstat -tan | grep --color ‘LISTEN[[:space:]]*$‘

8、添加用户bash, testbash, basher, nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户;

[[email protected] ~]# grep --color ‘^\([[:alnum:]]\{1,\}\):.*\1$‘ /etc/passwd

9、扩展题:新建一个文本文件,假设有如下内容:

He like his lover.

He love his lover.

He like his liker.

He love his liker.

找出其中最后一个单词是由此前某单词加r构成的行。

[[email protected] ~]# grep --color ‘\(l..e\).*\1r‘ 2.txt

时间: 2024-10-26 19:25:16

文本进行搜索:grep egrep fgrep的相关文章

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 #-

文本处理工具:grep egrep fgrep

一.grep:global search regular expression and print out the line. 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行 格式:grep [option] 'PATTERN' file1,...其中PATTERN为正则表达式. --color=auto:匹配的行高亮显示 -v:反向匹配,显示不能被模式所匹配的行 -o:仅显示被匹配的内容,而非整行 -i(ignore-case):不区分字符大小写 -A

grep egrep fgrep的使用

grep命令 grep [options] PATTERN [FILE...] 通过搜索于PATTERN匹配的字段,在FILE文件中查找到匹配的字段并显示整个行. options -A num:文本后几行 # grep -A 3 "root" /etc/passwd            root:x:0:0:root:/root:/bin/bash        bin:x:1:1:bin:/bin:/sbin/nologin        daemon:x:2:2:daemon:/

Linux文本处理之 grep egrep

linux下文本处理三剑客 第一剑 grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作: 第二剑 sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具: 第三剑 awk:GNU awk,文本格式化工具:文本报告生成器: 今天主要讲解第一剑: grep家族: grep:  支持使用基本正则表达式: egrep:支持使用扩展正则表达式: grep: 不支持使用正则表达式: grep命令: 作用:文本搜索工具,根据用户指定的&q

通配符和正则表达式-grep,egrep,fgrep

通配符和正则表达式-grep,egrep,fgrep 通配符和正则表达式,通配符用于文件名匹配,命令支持ls,cp,rm等;正则为通用匹配,命令支持grep,awk,sed,vi,find等.文本过滤工具grep,egrep,fgrep 通配符 *  匹配零个或多个任意字符 ?  匹配单个任意字符 [] 匹配指定范围内的一个字符,[]括号中的 字符间隔符 可以省略,如,\=:等等.举例[1:2=3,5\7] = [12357],也推荐使用这种省略写法作为标准 ^  取反,表示非.注意:非数字即包

grep, egrep, fgrep笔记

grep, egrep, fgrep grep: 根据模式搜索文本,并将符合模式的文本行显示出来.Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 grep [options] PATTERN [FILE...]    -i:不区分大小写    --color    -v: 显示没有被模式匹配到的行    -o:只显示被模式匹配到的字符串 *: 任意长度的任意字符?: 任意单个字符[]:[^]: 正则表达式:REGular EXPression, REGEXP元字符:.: 匹配任意

五. 正则表达式grep, egrep, fgrep

grep,egrep,fgrep : print lines matching a pattern 1.grep : grep [options] PATTERN FILE... PATTERN由元字符和和普通字符组成 -i : --ignore-case , 忽略大小写 -o : --only-matching, 只显示所匹配到的字符,二不是整行 -n : --line-number, 输出所匹配行的行号 -v : --invert-match, 显示除匹配行外的所有行 -E : --exte

Linux中的正则表达式 grep egrep fgrep

正则表达式: REGEXP REGuler EXPression,使用元字符和其他字符串来描述.匹配一系列符合某个句法规则的字符串.默认尽可能长得匹配(贪婪模式). 元字符: .:匹配任意单个字符(文件名通配中?表示任意单个字符) []:匹配指定范围内的单个字符 [^]:匹配指定范围外的单个字符 [:space:]:空白字符 [:puntt:]:所有标点符号 [:upper:]:所有大写字母 [:lower:]:所有小写字母 [:alpha:]:所有大小写字母 [:digit:]:所有数字 [:

linux基本命令grep egrep fgrep用法以及正则表达式

1.1.基本定义:  www.2cto.com grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来. grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是主意,grep在数据中查找一个字符串时,是以"整行"为单位进行数据筛选的. egrep命令等同于grep