grep ,正则表达式

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包 括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

正则表达式分类

基本正则表达式    (Basic Regular Expression )  BREs

扩展正则表达式    (Extend Regular Expression ) EREs

perl的正则表达式  (Perl Regular Expression ) PREs

格式

grep  [options]  pattern [file…]

选项和参数 (比较常用的选项,了解更多使用man grep 查看)

--color=auto

-n                            加上相对应的行号

-v  --invert-match 反向选取

-o  --only-matching 只显示被模式匹配到的字串 ,而不是整个行

-i   --ignore-case      忽略大小写

-l   --files-with-matches 只列出匹配的文件名

-L  --files-without-matches 只列出不匹配的文件名

-w  --word-regexp 匹配完整字符串(单词)

-A  Number 显示匹配到的行 并显示其后面的Number行

-B   Number 显示匹配到的行 并显示其前面的Number行

-C   Number           ……               显示前后面的Number行

-E   --extended-regexp  支持扩展正则表达式

元字符:

^:锚定行首的符合条件的内容,用法格式“^grep”;

$:锚定行尾的符合条件的内容,用法格式“grep$”;

.:匹配任意单个字符;

*:匹配紧挨在其前面的字符任意次;

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

[]:匹配包含内的任一字单个字符;

[^]:匹配包含外的任一字单个字符;

\:将下一字符标记为特殊字符、文本、反向引用或八进制转义符;

\?:匹配紧挨在其前面的字符0次或1次;

\<:锚定词首

\>:锚定词尾

x\{m\}:匹配其前面的字符“x”m次(精确匹配);

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

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

\(\):分组;

字符集合:

[:lower:]:代表小写字母,即 a-z

[:upper:]:代表大写字母,即 A-Z

[:digit:]:代表数字,即 0-9

[:alpha:]:代表任何英文大小写字母,即 a-z A-Z

[:alnum:]:代表英文大小字符及数字,即 0-9 a-z A-Z

[:space:]:代表空格键与Tab按键

[:punct:]:代表标点符号,即 “  , ;? ! : # $

grep及正则表达式实例

1. 在/etc/paswd文件查找匹配root的串 并以高亮显示其匹配的字符串

2.  在/etc/passwd文件中查找以root开头的行 并将其显示

通过行其锚定进行匹配 此次匹配的内容仅是以root开头的行 在其他位置出现的不匹配

3. 在/etc/passwd文件中查找以/bin/bash结尾的行 并将其显示

4. 在/etc/passwd文件中查找bin的字符串和锚定后bin字符串的比较

锚定后

通过锚定/< />进行字符串完全匹配 如果不适用锚定符 将会有/sbin类似的字符串一起出来

5.在/etc/passwd文件中查找匹配俩个bin之间包含的任意字符的行

该查找以bin为分组进行匹配 命令中\1 表示引用第一个分组的内容 如果字符串中有多个分组

可以用\2\3进行引用第二分组及第三分组中的字符串

6.在/etc/passwd文件中查找匹配o 并至少出现2次的字符串的行

匹配前面字符至少2次 至少出现2次或者更多次 比如 rooot 也会一起出现的

7.在/etc/fstab文件中以#开头 且后面跟一个或者多个空白字符 而后又跟任意非空白字符的行

8. 显示/etc/fstab文件中的内容 并不显示以#开头和空白行

简单介绍到这里  后续更新 如不足之处 请多多提议

grep ,正则表达式

时间: 2024-10-28 16:41:13

grep ,正则表达式的相关文章

linux入门之grep 正则表达式案例

grep 正则表达式案例 案例一: 1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) #grep -i '^s' /proc/meminfo #grep  '^[Ss]' /proc/meminfo #grep -E '^(s|S)' /proc/meinfo 2.显示/etc/passwd文件中不以/bin/bash结尾的行 #grep -v '/bin/bash$' /etc/passwd 3.显示用户rpc默认的shell程序 #grep '^\<rpc\>

grep 正则表达式

名字 grep, egrep, fgerp 解释: grep是一个最初用于Unix操作系统的命令行工具. 在给出文件列表或标准输入后, grep会对匹配一个或多个正则表达式的文本进行搜索, 并只输出匹配(或者不匹配)的行或文本. 用法: grep [option] 'PATTERN' file ... --color=auto          常用选项[option]:               -v : 反向匹配, 显示不能被模式匹配到的行.               -o : 只显示被

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正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

grep正则表达式原理介绍及应用实例

应用背景:我们刚刚添加了一个用户Luffy,但是不知道他的默认shell是什么. 问题:如何取出一个用户的默认shell? 解决方法: #grep '^Luffy\>' /etc/passwd | cut -d: -f7 /bin/bashf 通过上面的方法,我们就得到了Luffy这个用户的默认shell 文本搜索工具:就是要根据用户指定的文本模式,逐行的进行匹配,最终得到符合文本模式的行 grep是一个强大的文本搜索工具,下面我们就介绍一下grep的语法: grep [OPTIONS] PAT

linux grep 正则表达式

grep正则表达式元字符集: ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行. $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行. . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p. * 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行. .*一起用代表任意字符. [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep. [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]

linux 命令grep正则表达式

Linux 命令grep正则表达式 在linux里面有处理文本的三剑,现在我要说的就是grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vi grep ,awk ,sed 等都支持正则表达式..正则表达式有基本正则表达式和扩展正则表达式. grep默认就是基本表达式. 基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配. 扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样. 1. grep命令 grep [参数]

awk &nbsp; sed &nbsp; grep &nbsp; &nbsp; 正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数

vim 和grep 正则表达式相似和区别

正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则表达式具有处理能力.所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式. vim元字符 grep 元字符 说明 ^ ^ 匹配输入字符串的开始位置 $ $ 匹配输入字符串的开始位置 * * 匹配前面的子表达式0次或n次(n>0) \+ \+ 匹配前面的子表达式1次或n次(n>1) \? \? 匹配前面的子表达式0次或1次 \{n} \{n\}

grep 正则表达式的使用方法

awk .sed.grep(egrep)要想能工作的更高效,那一定离不开正则表达式的配合:要玩好三剑客,首先就要掌握正则表达式. 最开始的文本: 1)^word 搜索以word开头的行 2) word$ 搜索以word结尾的 3). 代表非换行符的任意一个字符 4)\ 转移符号,让有着特殊身份的字符,脱掉马甲,还原原型 5)* 例如o*表示重复一个字符或多个前面的字符 6).* 匹配所有字符,^.*以任意多个字符开头 7)[] 字符集合的重复特殊字符的符号*如[lg]是代表l或者g 现在的文本为