linux之grep基本及扩展正则表达式应用作业

Linux 培训8月27日作业

在8月27日的课程上,主要学习了关于grep命令的使用及其在基本正则表达式和扩展正则表达式下各元字符的具体应用.

1.总结本此课程中所涉及命令的使用方法及相关示例展示

本次课程所涉及的命令主要的有

grep它是一个文本过滤工具,它的作用是文本搜索工具,根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行

这里面提到的模式很重要,模式按个人理解想理解它就需要先了解什么是元字符。

元字符:是一组特殊符号,但它们并不表示它们原来的字符意义,而是起到表示通配或控制的功能。

那再回过头来看模式,模式就是一组结合了元字符所达到的一种过滤的条件,比如, grep -i就是说这是一个过滤条件是忽略过滤对象大小写的过滤模式。

个人认为这两个概念很重要,以上是个人理解。

用法展示.

grep [OPTIONS] PATTERN [FILE...]:

选项:

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

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

-i: 忽略字符大小写;

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

-q: 静默模式;

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

2.总结基本正则表达式及扩展正则表达式

基本正则表达式及其元字符用法

字符匹配:

.: 匹配任意单个字符;

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

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

[:lower:] 匹配小写字母

[:upper:] 匹配大写字母

[:alpha] 匹配所有字母

[:digit:] 匹配所有数字

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

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

[:punct:] 代表标点符号

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

*: 任意次;

grep "x*y"

\?:0或1次;

grep "x\?y"

\+:1或多次;

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

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

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

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

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

位置锚定:

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

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

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

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

^$: 空白行;

分组: \(PATTERN\) "\(ab\)*c"   --就是用括号把好几个组合变成一个组

后向引用:\1, \2, ...而后向引用就是比如\1就是引用整个第一个括号内组所表达的意思,\2就是第二个括号正个括号组内表达的意思,以此类推。

或者:

a|b

C|cat: 不表示Cat或cat,而表示C或cat;

要写成(C|c)at

这句理解就是       C是个字符,而cat是个单词,如果写成C|cat 后面跟的是一整个单词

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

字符匹配:

.: 任意单个字符

[]:

[^]:--这是除了模式里的内容的意思

次数匹配:

*

?: 0次或1次;

+: 1次以上;

{m}: 精确匹配m次;

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

锚定:

^: 锚定行首---这是表式一行

$: 锚定行尾

\<, \b锚定词首---这是表示某个词,指不定在这行的那里。

\>, \b锚定词尾

分组: (PATTERN) "(ab)*c"   --扩展和基本很多用法只是头或尾不加\

后向引用:\1, \2,

或者:

a|b

C|cat: 不表示Cat或cat,而表示C或cat;

要写成(C|c)at

3.显示/etc/passwd文件中以bash结尾的行

答: grep --color=auto “\<bash\>$” /etc/passwd

egrep --color=auto “\<bash$\>” /etc/passwd

4. 显示/etc/passwd文件中的两位数或三位数

答:gerp -o --color=auto “\<[[:digit:]]\{2,3\}\>” /etc/passwd

egerp -o –color=auto “\<[[:digit:]]{2,3}\>” /etc/passwd

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

答:netstat –tan | egrep –color=auto “LINSTEN[[:space:]]*$”

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

答:

useradd bash

useradd testbash

useradd basher

useradd –s /sbin/nologin nologin

egrep --color=auto “^(\<[[:alnum:]]+\>).*\1$” /etc/passwd

grep --color=auto "^\(\<[[:alnum:]]\+\>\).*\1$" /etc/passwd

7. 显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

答:

由于之前差得多,对于管道输送理解并不好,且对于cut命令这种用法也是借鉴和百度查的,其实并不理解 –d: -f这个用法.

而在使用cut时发现如 cut – b /etc/passwd 用法不对,必须cat /etc/passwd | cut –b 3方能有想显示的行或域,理解它是一个对内容选取的命令,而不是目录必须通过cat打开目录内容后才可以查阅。

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

egrep --color=auto "\<[0-9a-zA-Z_]+\>\(\)" /etc/rc.d/init.d/functions

egrep --color=auto "\<[[:alpha:]_]+\>\(\)" /etc/rc.d/init.d/functions

grep --color=auto "\<[[:alpha:]_]\+\>()" /etc/rc.d/init.d/functions

在用到扩展正则表达此题时是借鉴的,因为最初是这样写的 egrep –color=auto “\<[0-9a-zA-Z_]+\>()" /etc/rc.d/init.d/functions但一直表述不正确,借鉴后发现\(\)但一直想不明白括号前的\代表什么,查阅资料说是转义也就是将元字符在正则表达式中的特殊意义消除,()在之前基本正则表达式中就不需消除,难道在基本正则表达式中就不代表特殊意义吗?没想明白.

9、使用echo输出一个路径,而后egrep找出其路径基名要注意基名后面有没有“/”有则去掉;进一步的使用egrep取出其目录名

因前面有落下,借鉴说文件不能以/命名,但用法都自己想的.
 
答:

echo /etc/rc.d/init.d/functions | egrep -o "[^/]+$"

echo /etc/rc.d/init.d/functions | egrep --color=auto -o "/([^/].+)d"--这个算不算取巧.

10、找出ifconfig命令执行结果中1-255之间的数字
答:

ifconfig | egrep --color=auto -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

时间: 2024-10-31 17:38:06

linux之grep基本及扩展正则表达式应用作业的相关文章

2015年8月27日课程作业(文件权限管理及grep正则和扩展正则表达式)-JY1506402-19+liuhui880818

学习内容:文件权限管理及grep正则和扩展正则表达式 系统环境:CentOS 6.7/7 x86_64 一.作业(练习)内容: 1.总结本此课程中所涉及命令的使用方法及相关示例展示: 2.总结基本正则表达式及扩展正则表达式 3.显示/etc/passwd文件中以bash结尾的行 4.显示/etc/passwd文件中的两位数或三位数 5.显示`netstat -tan`命令结果中以'LISTEN'后跟0个.1个或者多个空白字符结尾的行 6.添加用户bash.testbash.basher以及nol

linux三剑客---grep,sed,awk与正则表达式

grep命令: grep全称:Global Regular Expression Print,即全面搜索正则表达式并把行打印出来,通过参数-E可以使用egrep的功能 grep与egrep的区别:在于grep只支持基础正则表达式,而egrep可以支持扩展的正则表达式 常用用法: [[email protected] ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c

Linux常用命令—egrep及扩展正则表达式

扩展正则表达式 扩展正则表达式命令:egrep 不支持正则表达式但是快速:fgrep 字符匹配: .: []: [^]: 次数匹配: *: ?: +:匹配其前面的字符至少一次 {m}:精确匹配 {m,n}无需反斜线: 位置锚定: ^: $: \<或者\b: \>或者\b: 分组: ():分组 \1,\2,\3,...... 或者 |:或(a|b) 例: C|cat=C或者cat (C|c)at=Cat或者cat 懒惰限定符 *?         重复任意次,但尽可能少重复 +?        

grep及扩展正则表达式

正则表达式有两类,分为基本正则表达式和扩展正则表达式,是使用命令egrep来使用扩展正则表达式,它与grep很多功能相同,仅在元字符上实现了些扩展,在元字符的表示上与基本正则表达式略不同. 1. 命令格式: egrep [option] pattern file 2. 命令功能: 用于过滤/搜索的特定字符.可使用扩展正则表达式能多种命令配合使用,使用上十分灵活 . 3. 命令参数: egrep等同于grep -E选项 扩展正则表达式的元字符: 字符匹配: . #匹配单个非换行符的字符 如:'gr

linux基础:shell中的正则表达式用法大全

在Linux系统中,正则表达式(RegularExpression)是通过一些特殊字符的排列,用以查找.替换.删除等操作的强大工具,对于每一个Linux用户,都是非常重要的.在现有的系统中,正则表达式也分为基础正则表达式(grep),扩展正则表达式(egrep).在正式了解正则表达式之前,先了解一些相关的字符概念,它们在正则表达式中都有特殊的含义与用法. 对于基础正则表达式grep而言,每个特殊字符分别有不同的匹配: 1.字符匹配: .     :匹配任意单个字符       [ ]    :匹

Linux篇 | 文本处理工具和正则表达式(二)

文本处理工具和正则表达式 Linux文本处理三剑客 grep:文本过滤(模式:pattern)工具 >grep, egrep, fgrep(不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 本篇主要讲述grep 一.grep 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行.(模式就是"正则表达式") 模式:由正则表达式字符及文本字符所编写的过滤条件

egrep及扩展正则表达式 与正则表达式不同处

egrep及扩展正则表达式与正则表达式不同处 正则表达式有两类,分为基本正则表达式和扩展正则表达式,是使用命令egrep来使用扩展正则表达式,它与grep很多功能相同,仅在元字符上实现了些扩展扩展,在元字符的表示上与基本正则表达式略不同. 1.命令格式: egrep [option] pattern file 2.命令功能: 用于过滤/搜索的特定字符.可使用扩展正则表达式能多种命令配合使用,使用上十分灵活. 3.命令参数:  egrep等同于grep -E选项 扩展正则表达式的元字符: 字符匹配

linux基础篇-12,grep正则表达式与扩展正则表达式

################################################ 基本正则表达式:grep 使用正则表达式定义的模式来过滤文本 grep -i :不区分大小写 --color -v:显示没被匹配的任意行 -o:只显示被匹配的字符串 -E 扩展的正是表达式 =egerp -A#:#为数字 -B#: -C#: [[email protected] testcp]# grep -o 'root' /etc/passwd --color root root root ro

Linux文本处理三剑客之grep一族与正则表达式

一,grep一族是什么? Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.这三者被称为Linux文本处理三剑客. grep一族:文本搜索工具 grep:支持使用基本正则表达式: egrep:支持使用扩展正则表达式,相当于grep -E: fgrep:不支持使用正则表达式,相当于grep -F; [PS:fgrep不需要加载正则表达式引擎,因此速度较快,fgrep的搜索效率在当文件达到几亿行时就能体现出来.(大型web网站一天的日志量都是几亿行的,