Linux中grep的使用以及grep的练习

grep:通过一个指定的模式匹配指定的行

常用选项:

--color=auto:对匹配到的串做高亮显示;

-v:显示模式匹配不到行;

-i:忽略字符大小写;

-o:仅显示能够被模式匹配到的串本行;

-q:静默模式;

-E:使用扩展的正则表达式;

-o:  只获取匹配到的内容;

-Anum :  匹配到搜索到的行以及该行下面的num行;

-Bnum :  匹配到搜索到的行以及该行上面的num行;

-Cnum : 匹配到搜索到的行以及上下各num行;

-n: 显示文件的行数;

-r  : 递归目录搜索指定内容的文件;

基本正则表达式的元字符:

字符匹配:

.:匹配任意单个字符;

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

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

[:lower:]匹配小写字母

[:upper:]匹配大写字母

[:alpha]匹配所有字母

[:digit:]匹配所有数字

[:alnum:]匹配所有数字字母 [:alpha:]和[:alpha:]和二为一

[:space]代表空格字符 例如:tab,换行,空格之类的

[:punct:]代表标点符号 例如:‘! "# $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ‘ { | }

次数匹配:用于要指定其次数的字符的后面;

*:任意次;

\?:0或1次;

\+:1或多次;

\{m\}:精确限制为m次;

\{m,n\}:至少m次,至多n次,[m,n];

\{0,n\}:至多n次;

\{m,\}:至少m次;

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

位置锚定:

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

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

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

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

^$:空白行;

分组:\(\)

分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...

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

后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

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

字符匹配:

.:匹配任意单个字符;

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

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

[:lower:]匹配小写字母

[:upper:]匹配大写字母

[:alpha]匹配所有字母

[:digit:]匹配所有数字

[:alnum:]匹配所有数字字母 [:alpha:]和[:alpha:]和二为一

[:space]代表空格字符 例如:tab,换行,空格之类的

[:punct:]代表标点符号 例如:‘! "# $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ‘ { | }

次数匹配:

*:0次或多次

?:0次或1次;

+:1次以上;

{m}:精确匹配m次;

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

锚定:

^:锚定行首

$:锚定行尾

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

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

分组:()

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

支持或的概念

a|b:匹配a或者b:

练习:

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

答:grep “bash$” /etc/passwd

2、显示/etc/passwd文件中的两位数或三位数;

答: grep "\b[[:digit:]]\{2,3\}\b" /etc/passwd

grep -E "\b[[:digit:]]{2,3}\b"/etc/passwd

3、显示‘netstat -tan‘命令结果中以‘LISTEN’后跟0个、1个或多个空白字符结尾的行;

答:  netstat-tan|grep ‘LISTEN[[:space:]]*$‘

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

答: 1.useraddbash

2.useraddtestbash

3.useradd basher

4.useradd-s /sbin/nologin nologin

5.grep ‘^\([[:alnum:]]\+\):.*\1$‘  /etc/passwd

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

答: egrep‘^(root|centos|user1)‘ /etc/passwd|awk -F":" ‘{print $1,$3,$7}‘

6、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行;

答: egrep ‘^([[:alpha:]]+).+\b\(\)‘/etc/rc.d/init.d/functions

7、使用echo输出一个路径,而后egrep找出其路径基名;进一步地:使用egrep取出其目录名;

答: 路径基名命令:echo/usr/local/nginx/conf/nginx.conf | egrep -o ‘([^/]*)$‘

路径目录名命令:echo/usr/local/nginx/conf/nginx.conf | egrep -o ‘^(.*)/‘

8、找出ifconfig命令执行结果中1-255之间的数字;

答: ifconfig|egrep ‘\b([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\b‘

时间: 2024-08-05 06:58:51

Linux中grep的使用以及grep的练习的相关文章

Linux中重定向、管道和grep命令总结

今天我们来讲下Linux中的重定向.管道和grep命令.由于重定向和管道知识点比较少,但是又比较重要所以和grep命令一起讲. 在将重定向我们先讲下系统的标准输入和输出.在Linux中标准输入(STDIN 0)对应设备:键盘:标准输出(STDOUT 1)和标准错误输出(STDERR 2)对应设备:显示器.重定向就是将标准输入输出重新定位到指定位置或者设备中(比如:文件). I/O重定向 set –C 禁止对已存在的文件进行覆盖重定向 强制覆盖>| set +C 关闭上述功能 输出重定向: >:

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、egrep及相应的正则表达式和用法

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

Linux中grep,sed的使用

今天,Mayuyu来讲一些Linux中常用的命令. 1. grep命令 grep用于过滤自己需要的内容,语法如下    grep Mayuyu --color 过滤出所有包含Mayuyu的行,grep中也是支持正则表达式的. 2. sed命令 使用普通的vim编辑器在编辑文件时有两个主要的问题    (1)当文件比较大的时候,需要打开文件,占用较大的内存. (2)编辑文件时,必须互动,所以很难调用vim等. sed属于流编辑器,所谓流编辑器就是在编辑文件的时候,可以不用把整个文件都读入内存,可以

Linux中find、grep命令详细用法

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令 find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以

Linux中不可或缺的“grep三人组”与正则表达式的那些事

Linux上文本处理"三人组" grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作: 正则表达式:Regular Expression, REGEX,由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能: 分两类: 基本正则表达式:BRE 扩展正则表达式:ERE grep家族: grep:  支持使用基本正则表达式: egrep:支持使用扩展正则表达式: fgrep:不支持使用正

Linux中grep、egrep正则表达式的使用

正则表达式的由来 正则表达式,英文写法Regular Expression,在编程语言中常被简写为regex.regexp等.它是用来描述.匹配一系列符合某个句法规则字符串的单个字符串. 正则表达式通常被用来检索.替换那些符合某个模式(Pattern)的文本. 1950年代,UNIX之父Ken Thompson将正则表达式引入编辑器QED,然后是编辑器ed,最终引入到grep中.从此,正则表达式被广泛地应用到了各种UNIX或类UNIX系统的工具之中,例如perl. 近些年来,主流操作系统.主流开

Linux中grep命令学习

1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就说,正则表达式中的元字符表示回其自身的字面意义,不再特殊.linux使用GNU版本的grep.它功能更强,可以通过-G.-E.-F命令行选项来使用egre

Linux中grep,egrep正则表达式基本用法

正则表达式 本人第一次写博文.由于最近刚好学到了正则表达式基本使用方法.整理了一下,以后用于回顾查找. 正则表达式基本说明: 基本来说,正则表达式式一种用来描述一定数量文本的模式,正则表达式的简写为REGEX 全称Regular Express. 首先正则表达式对于Linux运维工程师来说非常重要,这将伴随每一个运维工程师的职业生涯.说到正则表达式那么不得不说一下grep和egrep,grep全称是Globally search for a Regular Expression and prin

linux中grep命令-From cyber

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