文本处理工具grep和sed的用法

正则表达式:Regual Expression ReGEXP

基本正则表达式:BRE

扩展正则表达式:ERE

作用;文本搜索工具,根据用户指定的”模式(PATTERN)“对目标文本进行逐行匹配检查,并打印匹配到的行。

模式(PATTERN):由正则表达式的元自负及文本字符所编写出的过滤条件。

grep[OPTIONS]PATERN[FILE]

grep[OPTIONS][-e PATTERN][FILE]

[OPTIONS]:

--color=auto:对匹配到的文本着色高亮显示(CentOS7中默认)

-i:忽略字符大小写

-v:显示没有被匹配到的行

-o:仅显示被匹配到的字符串本身

-E:支持使用扩展正则表达式元字符

-q:静默模式,不输出任何信息

-A#:显示被匹配到的行和其后#行

-B#:显示被匹配到的行和其前#行

-C#:显示被匹配到的行前后#行

元字符:

字符匹配:

.:匹配任意单个字符

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

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

[:digit:]数字

[:lower:]:小写字母

[:upper:]:大写字母

[:alpha:]:字母

[:alnum:]:字母和数字

[:punct:]:标点符号

次数匹配:用于指定其前面字符出现的次数(默认为贪婪模式)

*:匹配其前面字符任意次

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

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

\{m,n\}:匹配其前的字符至少m次,至多n次

\+:匹配其前的字符至少一次

\{m\}:匹配其前字符m次

位置锚定:

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

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

^PATTERN$:用模式匹配整行

^$:空白行

^[[:space:]]$:匹配空行或者含有空白字符的行

单词:非特殊字符组成的连续字符(字符串)都称为单词

\<或\b:锚定词首,位于模式的左侧

\>或\b:锚定词尾,位于模式的右侧

\<PATTERN\>:匹配完整单词

分组:\(  \) 将一个或多个字符捆绑在一起

后向引用:

\1:引用第一个左括号一级与之对应的右括号所包含的内容

\2:

.

.

注:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中。

例:显示/etc/passwd文件中包含root字符的行

~]# grep "root" /etc/passwd

例:显示/etc/passwd文件中以/bin/bash结尾的行;

~]#  grep "/bin/bash$" /etc/passwd

例:显示/etc/passwd文件中包含大写字母的行:

~]# grep "[[:upper:]]" /etc/passwd

                         例:找出/proc/meminfo文件中,所有以大写或小写S开头的行;

~]# grep "^[Ss]" /proc/meminfo

例:找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行

~]# grep "\<.*\>()" /etc/rc.d/init.d/functions

例: 找出/etc/passwd文件中的两位数或三位数

~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd

egrp:支持扩展的正则表达式实现类似于grep文本过滤功能(egrep -E)

元字符:

字符匹配:与基本正则表达式相同:

.:匹配单个字符

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

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

.

次数匹配与基本正则表达式有所不同:

*:匹配其前字符任意次

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

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

{m,n}:匹配其前字符至少m次至多n次

{m}:匹配其前字符m次

位置锚定与基本正则表达式用法相同

分组:

():分组

后向引用:

\1

.

或者:

|

a|b:匹配出a或者b

fgrep:不支持正则表达式元字符,当无需用到元字符去编写模式时,使用fgrep更好

例:找出/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面跟非空白字符的行

~]# egrep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg

例:显示当前系统上root、centos或user1用户的相关信息

~]#  egrep "^root|^centos|^user1" /etc/passwd

例:使用echo命令输出一绝对路径,使用egrep取出基名、

~]# echo /etc/sysconfig/ | egrep -o "[^/]+/?$"

例:同上取出其路径名

~]#  echo /etc/sysconfig/ | egrep  -o  "^/[[:alnum:]]+"



sed查找机制:将目标文本中的内容逐行复制到sed的模式空间(pattern pace工作车间)中并在模式空间中对文本进行匹配处理,如果模式空间中的内容能陪匹配到之后对匹配到的文本内容进行编辑然后把编辑的结果输出,如果模式空间中的内容不能被匹配到就直接输出至标准输出。

sed命令的用法:

sed[OPTIONS]...‘script‘[input-file]...

script:地址定界编辑命令(地址定界和编辑命令之间没有空格)

常用选项:

-n:静默模式,不输出模式空间中的内容至屏幕

-e script :多点编辑

-f /PATH/TO/SED_SCRIPT_FILE

每行一个编辑命令;

-r:支持使用扩展的正则表达式

-i:直接编辑原文件

地址定界:

(1):空地址:对全文进行处理

(2):单地址:

#:指定行

/pattern/:被此模式匹配到的每一行

(3):地址范围:

#,#:从第#行到第#行

#,+#:从第#行到第#+#行,包含第一行。

#,/pattern/:从第#行到能被匹配到的行

/pattern1/,/pattern2/:从模式一匹配到的行到模式二匹配到的行

(4):步进:~

1~2:所有奇数行

2~2:所有偶数行

编辑名令:

d:删除。

p:显示模式空间中的行。

a\text:在匹配行后面追加文本text。

i\text:在匹配到的行前插入文本text。

c\text:把匹配到的行替换为此处指定的文本”text“。

w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中。

r /PATH/TO/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面,                                                                       文件合并。

=:为模式匹配到的行打印行号。

!:条件取反:

地址定界!编辑命令

s/pattern/text/:查找替换,分隔符可自行制定,用text替换匹配到的内容

替换标记:

g:全局替换

w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中

p:显示替换成功的行

例:删除/boot/grub2/grub.cfg文件中所有以空白字符开头的行的行首的所有空白字符

~]# sed  ‘[email protected]^[[:space:]]\[email protected]@‘  /boot/grub2/grub.cfg

例:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符

~]# sed ‘[email protected]^#[[:space:]]*@@’ /etc/fstab

例:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname

~]#  echo /var/log/messages | sed ‘[email protected][^/]\[email protected]@‘

时间: 2024-10-14 15:07:12

文本处理工具grep和sed的用法的相关文章

shell之三大文本处理工具grep、sed及awk

grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更强大而已,且已独立成一种语言来介绍. grep:文本过滤器,如果仅仅是过滤文本,可使用grep,其效率要比其他的高很多: sed:Stream EDitor,流编辑器,默认只处理模式空间,不处理原数据,如果你处理的数据是针对行进行处理的,可以使用sed: awk:报告生成器,格式化以后显示.如果对处

三大文本处理工具grep、sed及awk的简单介绍

grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更强大而已,且已独立成一种语言来介绍. grep:文本过滤器,如果仅仅是过滤文本,可使用grep,其效率要比其他的高很多: sed:Stream EDitor,流编辑器,默认只处理模式空间,不处理原数据,如果你处理的数据是针对行进行处理的,可以使用sed: awk:报告生成器,格式化以后显示.如果对处

文本处理工具之二 sed命令详解

======博主所学知识来着于恩师马哥的亲授====== 马哥教育"2014夏令营"开始啦!!!马哥教育是目前性价比最高的Linux培训,国内好评度排名第一,并被网友称为Linux界的"黄埔军校",全部课程采用Centos6.5x86_64讲解,经过几期网络班的总结和锤炼,逐渐完善的课程体系,学员学习进度监督和优质的考试系统检验学员掌握程度,活跃的在线答疑环节,名师陪伴,牛人指点,精彩不容错过. 详情猛戳:http://www.magedu.com/ 课程内容:ht

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

详解正则表达式以及文本处理工具&mdash;grep、egrep的用法和特性

一.grep (1)grep简介 grep:全称是Global search REgular expression and Print out the line,全局搜索正则表达式并输出合适的行. grep是一种强大的文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行.(只对文本进行搜索处理) Unix的grep家族包含grep.egrep和fgrep. (2)grep的用法 语法格式:grep [option]... 'PATTERN' FILE... 选

15.自学Linux之路:文本处理工具grep,eprep和fgrep

文本处理工具grep,eprep和fgrep: grep:(global search regular expression and print out the line),全面搜索正则表达式,并显示相应的行 文本搜索工具:根据用户指定的文本模式对目标文件逐行搜索,显示能够被模式匹配的行 格式:grep  [options]  'PATTERN'  file,.....    文本过滤器 --color=auto:将匹配到的模式加上颜色 例:#grep  --color=auto  Boot  

正则表达式和文本搜索工具grep

正则表达式是由字面文本和具有特殊意义的符号组成的.我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本.它是一种匹配文本的通用语言.正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤.剥离.替换.搜索等. 正则表达式的基本组成部分 ^ #行起始标记(使用cat -a显示空格,行首,行尾等标记.) #示例 ^It 匹配以It起始的行 $ #行尾标记 #示例 It$ 匹配以It结尾的行 . #匹配任意一个字符 #示例:Hack.匹配Hackl和H

Linux文本处理工具——Grep

Grep简介 全名:Global search Regular expression and Print out the line. 功能:文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. Linux的三大文本处理工具之一,可以说学好grep命令无疑是重要的,可以说学好grep也是不容易的,因为grep里面要用到最烦人的正则表达式. grep语法格式 grep [option]... 'PATTERN' FILE... [option]:表示可以跟选项,