grep之正则表达式的理解及应用

简介:

正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的学习中会不断进步、勤加练习终究会跳出来的。好了,以下是本人对正则表达式的一点理解,如有错误之处请联系我,会修改和学习的。

  一、正则表达式之grep.

 正则表达式是一种符号表示法,用于识别文本模式。Linux处理正则表达式的主要程序是grep。grep搜索与正则表达式匹配的,并将结果输送至标准输出。

    (1)正则表达式之匹配模式。

     ①格式

     grep按下述方式接受选项和参数(其中,REGEXP表示正则表达式)

     grep [option] REGEXP file

  ②具体选项



   选项        含义              功能描述
-i ignore case 忽略大小写
-v invert match 不匹配匹配的
-l file-with-match 输出匹配的文件名
-L file-without-match 输出不匹配的文件名
-c count 输出匹配的数目(行数)
-n number 输出匹配行的同时在前面加上文件名及在文件名中的行数
-h no-filename 抑制文件名的输出

  ③举例说明


  1、 显示/proc/meminfo文件中以大小s开头的行

  wKiom1l8j8azbyjLAAA9a-z4w8c952.png 

  2、显示/proc/meminfo文件中不以s开头的行

  wKioL1l8kbiTpfIoAACzE0ohrnE829.png

  3、显示/proc/meminfo文件中大s开头的行数

  wKioL1l8lkfTeh08AAAMf6kf5eQ526.png

  4、显示/proc/meminfo文件中大s开头的行数并且在文件名上加上行数

  wKioL1l8lxbT2qaOAABMpVat3Wk667.png

                          华丽的分割线                                                    


 二、元字符的列表以及它们在正则表达式上下文中的行为

  1)字符匹配和次数匹配。

   字符
                 说明
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。
$ 匹配输入字符串结束的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。
*

匹配前面的字符任意次,包括0次

贪婪模式:尽可能长的匹配

\+
匹配其前面的字符至少1次
\? 匹配其前面的字符0或1次
\{n\} 匹配前面的字符n次
\{n,\} 匹配前面的字符至少n次
\{n,m\} 匹配前面的字符至少n次,最多m次。
| 或的意思。例如:"AAA|BBB"满足的例子AAA、BBBpp
. 任意字符。例如:"a.c"满足的例子abc、fapccdeng
.* 任意长度的任意字符
() 将候选的所有元素放在()内,用|隔开。例如:"a(1|2|3)bc"满足的例子a1bc、mba3bcd
[:alnum:] 字母和数字,与[A-Za-z0-9]等价
[:alphp:] 字母,与[A-Za-z]等价
[:digit:] 数字,与[0-9]等价
[:xdigit:] 十六进制字符,与[0-9A-Fa-f等价]
[:blank:] 空格和制表符
[:lower:] 小写字母
[:upper:] 大写字母
[:punct:] 标点符号
   (2)位置锚定

  定位出现的位置

  字符                      说明
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b  词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词

   三、元字符在正则表达式的具体应用

  1、找出ifconfig命令结果中的0-255之间的数字。

   ifconfig|grep -E "\<([0-9]|[1-9][0-9]|1[0-9][0-9]|25[0-5])\>"

   2、找出/etc/passwd中的两位或三位数

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

   3、统计last命令中以root登录的每个主机IP地址登录次数

   last|grep -o "^root\>.*[0-9]\.[0-9]\{1,3\}"|tr -s "  "|cut -d" " -f3|uniq -c|sort -n

   4、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面

   echo 'welcome to magedu linux'|grep -o "."|sort|uniq -c|sort -nr

   5、使用egrep取出/etc/rc.d/init.d/functions中其基名

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

   6、使用egrep取出上面路径的目录名

   echo '/etc/rc.d/init.d/functions'|grep -Eo "^/.*/"

   7、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

   cat /etc/rc.d/init.d/functions|grep -Eo "^[[:alnum:]_].*\(\)" 

   8、显示ifconfig命令结果中所有IPv4地址 

   ifconfig|egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"

   9、利用df和grep,取出磁盘各分区利用率,并从大到小排序

   df |grep /dev/sd |grep -o "\<[0-9]\{1,2\}\>"|sort -nr

   10、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行

   cat /etc/passwd|grep -o "^\(.*\)\>.*\<\1$"

   11、显示CentOS7上所有系统用户的用户名和UID

   cat /etc/passwd |cut -d: -f1,3|grep "\<[0-9]\{1,3\}\>$"

   12、找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行

   netstat -tan|grep "LISTEN[[:space:]]\+$"

   13、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

   cat /etc/grub2.cfg|grep "^[[:space:]]\+[^[:space:]]"

   14、找出/etc/passwd中的两位或三位数

   cat /etc/passwd|grep "[0-9]\{2,3\}"


  

   本文转自 LUksl 51CTO博客,原文链接:http://blog.51cto.com/19940919/1952021



相关文章
|
人工智能 机器人 Unix
正则表达式的应用
正则表达式的应用
101 0
|
12天前
|
存储 Kotlin
正则表达式在Kotlin中的应用:提取图片链接
正则表达式在Kotlin中的应用:提取图片链接
|
6月前
|
Java 测试技术
Java一分钟之-正则表达式在Java中的应用
【5月更文挑战第14天】正则表达式是Java中用于文本处理的强大力量,通过`java.util.regex`包支持。常见问题包括元字符的理解、边界匹配和贪婪/懒惰量词的使用。错误通常涉及未转义特殊字符、不完整模式或过度匹配。要避免这些问题,需学习实践、使用在线工具和测试调试。示例代码展示了如何验证邮箱地址。掌握正则表达式需要不断练习和调试。
55 2
|
3月前
|
Python
告别死记硬背:掌握Python正则表达式re模块的高效应用&[面向百度编程]
Python中正则表达式的高效应用,通过内置的`re`模块,讲解了如何匹配、提取和替换字符串,并提供了相关示例代码,同时提倡通过实践来掌握正则表达式的使用,而不是仅仅依赖网络搜索。
47 1
|
3月前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
52 0
|
5月前
|
监控 Java 数据处理
正则表达式数字匹配技巧与应用场景分析
正则表达式数字匹配技巧与应用场景分析
|
4月前
|
Java
正则表达式在Java中的应用与实例
正则表达式在Java中的应用与实例
|
4月前
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用
|
4月前
|
数据采集 监控 Java
正则表达式数字匹配技巧与应用场景分析
正则表达式数字匹配技巧与应用场景分析
|
5月前
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用