正则表达式-grep-用法详解

grep命令

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。



grep语法格式:

grep  [-options]  ‘word‘  filename

-c  统计匹配到的部分的总行数
-n  输出匹配到的部分及行号
-o  仅输出文件中匹配到的部分
-v  反转查找
-An 关键字所在行及上n行 
-Bn 关键字所在行及下n行 
-Cn 关键字所在行及上下n行
-r  对目标下的文件进行遍历
-E  使用扩展正则表达式
-i  忽略大小写
-q  不显示任何信息,运行成功返回0,失败则返回非0值,一般用于条件测试
-d  指定要查找的是目录而非文件,否则grep命令将回报信息并停止动作
-e  指定字符串作为要查找的文件内容
-I  列出文件内容符合指定的范本样式的文件名称
-L  列出文件内容不符合指定的范本样式的文件名称
-Z  指定以0值字节作为终结符文件名
-b  在显示匹配内容的那一行之外,并显示该行之前的内容。

grep命令常见用法:

1、为了方便使用,首先定义alias

[[email protected] ]# aias grep=‘grep -E --color‘
# -E 相当于egrep

2、 -c  统计匹配到的部分的总行数

[[email protected] ]# grep -c ‘root‘ /etc/passwd
2

3、-n  出匹配到的部分及行号

[[email protected] ]# grep -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin/

4、-o  仅输出文件中匹配到的部分

[[email protected] ]# grep -o ‘root‘ /etc/passwd
root
root
root
root

5、-v  反转查找

[[email protected] ]# grep -v ‘root‘ /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6、-An  关键字所在行及上n行 -Bn 关键字所在行及下n行 -Cn 关键字所在行及上下n行

[[email protected] ]# grep  -C1 -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
--
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin

7、-r  对目标下的文件进行遍历

[[email protected] ]# grep -r ‘root‘ /etc/
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/yum/pluginconf.d/fastestmirror.conf:# as root).
匹配到二进制文件 /etc/alternatives/libip4tc0.x86_64

8、-e  指定多个匹配样式

echo this is a text line | grep -e "is" -e "line" -o 
is 
line

9、-IZ 使用0值字节后缀的grep与xargs

echo "aaa" > file1
echo "bbb" > file2
echo "aaa" > file3
grep ‘aaa‘ file* -lZ | xargs -0 rm
#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用

10、-b 打印匹配字符所位于的字符或字节位置

echo gun is not unix | grep -b -o "not" 
7:not
#从该 行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。

11、在多个文件中查找

[[email protected] ]# grep ‘root‘ passwd passwd1
passwd:root:x:0:0:root:/root:/bin/bash
passwd:operator:x:11:0:operator:/root:/sbin/nologin
passwd1:rootrootrootasdlfjaksjdklfajksdfjaskdf

12、过滤出所有包含数字的行

[[email protected] ]# grep ‘[0-9]‘ /etc/passwd

13、过滤出以非数字开头的行

[[email protected] ]# grep ‘^[^0-9]‘ 1.txt

14、去除所有以#开头/结尾的行

[[email protected] ]# grep -v ‘^#‘ 1.txt
[[email protected] ]# grep -v ‘#$‘ passwd

15、去除所有空行和

[[email protected] ]# grep -v ‘^$‘ 1.txt

15、过滤出以英文字母开头的行

[[email protected] ]# grep ‘^[a-zA-Z]‘ 1.txt

16、指定过滤字符次数

[[email protected] ]# grep ‘o\{2\}‘ 1.txt
#没用egrep所以需要脱义

17、扩展应用

[[email protected] ]# egrep ‘roo|body‘ 1.txt

#匹配roo或者匹配body

[[email protected] ]# egrep ‘r(oo)|(at)o‘ 1.txt

#用括号表示一个整体

[[email protected] ]# egrep ‘(oo)+‘ 1.txt 
#表示1个或者多个 ‘oo‘

. 表示任意一个字符(包括特殊字符)

* 表示零个或多个*前面的字符

.* 表示任意个任意字符(包含空行)

+ 表示1个或多个+前面的字符

? 表示0个或1个?前面的字符

其中,+ ? grep不支持,egrep或者grep -E才支持。

时间: 2024-08-27 05:24:26

正则表达式-grep-用法详解的相关文章

grep用法详解 grep与正则表达式

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 主要参数    [options]主要参数:    -c:只输出匹配行的计数.    -I:不区分大 小写(只适用于单字符).    -h:查询多文件时不显示文件名.    -l:查询多文件时只输出包含匹配字符的文件名.    -n:显示匹配行及 行号.    -s

grep正则表达式与grep用法详解

功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名 参数说明: -a:将二进制文档以文本方式处理-c:显示匹配次数-i:忽略大小写差异-n:在行首显示行号-A:After的意思,显示匹配字符串后n行的数据-B:before的意思,显示匹配字符串前n行的数据-v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行 --color:以特定颜

grep用法详解:grep与正则表达式 [转]

正则表达式与通配符不一样,它们表示的含义并不相同. grep命令的选项用于对搜索过程进行补充说明.grep命令的模式十分灵活,可以是字符串.变量,还可以是正则表达式. 无论模式是何种形式,只要模式中包含了空格,就需要使用双引号或单引号将模式引起来. '搜寻字符串’是正则表达式,注意为了避免shell的元字符对正则表达式的影响,请用单引号(’’)括起来,千万不要用双引号括起来("”)或者不括起来.正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.g

[转载]强大的grep用法详解:grep与正则表达式

首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比 较大,所以也花了点时间研究正则,特与大家分享下:1基础正则表达式grep 工具,以前介绍过.grep -[acinv] '搜索内容串' filename-a

sed及grep用法详解

在linux系统有被称为文本处理三剑客grep,sed,awk. 今天与大家分享的就是gerp和sed处理工具,至于awk,我将会在晚些的时间与大家分享,在分享grep和sed之前我先要和大家说说正则表达,正则表达是什么呢,正则表达式就像是三剑客手里的剑,没有剑哪还能称的上什么剑客,所以我们要先了解以下正则表达式的简单用法. 什么是正则表达式: "正则表达式是描述一组字符窜特征的模式,用来匹配特定的字符串."--Ken Thompson 基本正则表达式的元字符有以下这些: . :匹配任

正则表达式的用法详解

一.何谓正则表达式 正则表达式是是由元字符及正常字符所书写的模式,其中的元字符不表示字符本身的意义,而是用于表达控制或通配等功能. 二.基本正则表达式元字符: (1) 字符(范围)匹配 .  :匹配任意单个字符            [] :匹配指定范围内的任意单个字符            [^]:匹配指定范围外的任意单个字符                [0-9],[[:digit:]],[^0-9],[^[:digit:]]                [a-z],[[:lower:]

linux系统 I/O重定向、管道及grep用法详解

输入/输出设备(INPUT OUTPUT) 系统设定 默认输出设备:标准输出 STDOUT 1 默认输入设备:标准输入 STDIN 0 标准错误输出:STDERR 2 默认标准输入:键盘 默认标准输出和错误输出:显示器 linux I/O重定向 >:覆盖输出 >>:追加输出 set -C:禁止对已经存在的文件使用覆盖重定向 强制覆盖输出:则使用>| set +C:关闭上述功能 2>:重定向错误输出 2>>:追加方式错误输出 &>:重定向标准输出和错误

正则表达式的用法详解(字符判读的利器)

- (BOOL)validateNumber:(NSString *) textString { NSString* [email protected]"^[0-9]+$"; NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number]; return [numberPre evaluateWithObject:textString]; } 其中下述语句就是一

linux中grep用法详解

查找特定字符串并颜色显示 [[email protected] test]# grep -n 'the' regular_express.txt --color=auto 8:I can't finish the test. 12:the symbol '*' is represented as start. 15:You are the best is mean you are the no. 1. 16:The world <Happy> is the same with "gl

grep用法详解

格式: ** grep [-acinv] [--color=auto] '搜寻字串' filename** 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻字串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字串' 内容的那一行! --color=auto :可以将找到的关键字部分加上颜色的显示喔! 通过grep能匹配出我们需要的一些信息. [[email protect