文本处理工具grep、egrep的具体用法

简介:

一、grep、egrep含义

grep:(global search regular expression(RE)and print out the line);文本搜索工具,根据用户指定的文本模式(PATTERN)对目标文件进行逐行搜索,并显示能够被模式匹配到的行。

egrep:相当于 grep -E ;使用扩展正则表达式来构建模式。



为了更好的阅读和区分其中的元字符和选项,都以红色和加粗标识出来。

在文中截图中的命令egrep没有使用选项加颜色,使用的是临时更改的环境变量:命令:

       export GREP_OPTINOS='--color=auto'

       export GREP_COLOR='01;31'


二、基本用法

1、格式:grep [options] 'PATTERN' file, ...(可以指定多个文件)

wKioL1MEXkzCEwBSAAClliFg1KA033.jpg

--color=auto可以高亮显示匹配到的内容;

wKiom1MESybwa2kdAABK2RgWPRA467.jpg


2、参数

2.1:常用参数

-v反向显示,显示不能被模式所匹配到的行;

wKioL1MES5jj-hfQAACOBoqFEOk777.jpg

-o只显示被模式匹配到的字串,而非整行;

wKioL1MES-7Bw1l0AAApyt7RISQ973.jpg

-i:不区分字符大小写。ignore-case;

wKioL1METNmQsa8ZAAAq04hgU44972.jpg

-E:支持扩展正则表达式;

-A#:显示匹配到的内容及其下面#行;

wKioL1METl-ifsNuAABKvK8Nlrc214.jpg

-B#:显示匹配到的内容及其上面#行;

-C#:显示匹配内容及其上下各#行;

wKiom1METrqRW5TZAAB4LbULIMk809.jpg


2.2:其他参数

-s--no-messages: 不显示错误信息。

-V--version: 显示版本信息。

-w--word-regexp: 只显示全字符合的列。    

-x--line-regexp: 只显示全列符合的列。

-y: 此参数的效果和指定“-i”参数相同。

--help 在线帮助。

同时也可以使用man grep来查看具体的详细参数与说明。


三、正则表达式

1、含义:正则表达式(Regular Expression);正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

       基本正则表达式和扩展正则表达式:工作于贪婪模式,尽可能长的匹配字符;


2、基本正则表达式元字符


字符匹配:

.:匹配任意单个字符;

wKioL1MET-zDwsJ0AAAhlvydMN8953.jpg

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

范围:

wKioL1MEUFGRjSyMAACIc4v_mx0855.jpg

wKioL1MEUMqTDGcgAAAqH_UV9_Y750.jpg

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

wKioL1MEU6nT5mWMAAAtpYhxa4Y358.jpg


次数匹配:

*:匹配其前面字符的任意次;0次或多次

wKiom1MEVNjzTtTyAACFqrpFzXA134.jpg

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

wKioL1MEVRvT-AKMAAA_qAlG1e0875.jpg

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

wKioL1MEVWbDo0ptAAAzTOzjt3g542.jpg

\{m\}:匹配m次;

wKioL1MEVeSxRmAaAAA3DrfyjuU897.jpg

\{m,n\}:匹配至少m次,至多n次;

wKioL1MEVgvyNuS4AAAqx1Mby-U004.jpg

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

wKioL1MEVl6wapyKAAApCT1s6nY155.jpg

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

wKiom1MEVwGDLlnzAAAwFYMTi38680.jpg


位置锚定:

^:锚定行首;

wKioL1MEVxbwbuxZAAArXFy1HdY591.jpg

$:锚定行尾;

wKioL1MEV1OyuuuWAABffvIh_eE184.jpg

\<|\b:锚定词首;

wKioL1MEWNOh7kQXAAAqMDGxaVI993.jpg

\>|\b:锚定词尾;

wKiom1MEWQnBG-6TAAAl7IdBilg978.jpg

^$:为空白行;


分组:

\(\):分组

wKiom1MEkYOSFYJfAABcFQHoRzI580.jpg

\#:#为数字;对分组的字符串基于位置进行引用;

   例:\1;引用前面的第一个左括号以及与之对应的右括号中的模式所匹配的内容。

wKioL1MEkaOSUqs-AABF7jMScvk231.jpg


3、扩展正则表达式元字符:大部分与正则表达式的元字符是相同的,但是\转义符是不需要添加的。

字符匹配:

.:任意单个字符;

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

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


次数匹配:

*:其前面的字符任意次;

?:匹配其前面的字符0次或1次;

+:匹配其前面的字符至少1次;

wKiom1MEWwSgw5XzAAAwM7VZFJo512.jpg

{m}:匹配其前面的字符m次;

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

{m,}:至少m次;

{0,n}:至多n次;


锚定:与基本正则表达式相同;

分组:

():分组;

|:或者;

wKioL1MEW8fzD-zaAABIEzHD6WY651.jpg


四、具体的实例


显示/proc/meminfo中以大小写S开头的行;

wKiom1MEYiuBPqPnAAB9vMHmaLE025.jpg


取出默认shell为非bash的用户;

wKiom1MEZIWQPZanAABSMavvLrU596.jpg


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

wKiom1MEZVmBGxbNAAEdr8YjuEA942.jpg


添加用户bash和testbash、basher,而后找出当前系统上其用户名和默认shell相同的用户;

wKiom1MEazmCit-tAACgIHxBBLw523.jpg


写一个匹配规则可以匹配IP地址:1.0.0.1--223.255.255.254

1
egrep  "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-2][0-3])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>"

wKiom1MIO4yBe3HOAAEL68Qph-0088.jpg

wKioL1MIO5zCnjOZAAE4l7Nl0Sk504.jpg


本文转自Mr_陈 51CTO博客,原文链接:http://blog.51cto.com/chenpipi/1360509,如需转载请自行联系原作者

相关文章
|
7月前
|
运维 Shell Linux
linux文本处理工具——grep、sed、awk用法
linux文本处理工具——grep、sed、awk用法
95 1
|
9月前
|
Perl
文本处理三剑客(grep、sed、awk)
文本处理三剑客(grep、sed、awk)
49 1
|
10月前
|
存储 移动开发 Unix
linux中最为常用的三大文本(grep,sed,awk)处理工具
linux中最为常用的三大文本(grep,sed,awk)处理工具
97 0
|
10月前
|
Linux C语言 计算机视觉
linux中最为常用的三大文本(grep,sed,awk)处理工具(下)
linux中最为常用的三大文本(grep,sed,awk)处理工具
123 0
|
存储 Linux vr&ar
Linux文本处理三剑客sed详解(正则匹配、命令示例)
sed读一行放到模式空间进行处理 sed是一种在线的、非交互式的编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,成为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有更改,除非使用重定向存储输出。 sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序
167 0
|
Linux Perl
linux高级命令行文本处理cut,sed,awk
cut   sort排序 wc  sed linux sed的详细指令 -i会删除 删除 替换 AWK awk命令详解   ...
1753 0
|
Linux 网络安全 Perl
Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk   老大 【功能说明】 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 ...
1402 0