文本处理三剑客之 grep/egrep
grep:文本过滤工具 支持BRE
egrep: 支持ERE
fgrep: 不支持正则
作用:根据用户指定的“模式”,对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
[OPTIONS] PATTERN [FILE...]
options:
-v:显示不被PATTERN匹配的行 排除
# 显示/etc/passwd文件中不以/bin/bash结尾的行 grep -v '/bin/bash$' /etc/passwd
-i:忽略字符大小写
-n:显示匹配的行号
-c:显示匹配的行数
-o:仅显示被匹配的字符串
-q:静默模式,不输出任何信息
-A #:after,后#行
-B #:before,前#行
-C #:context,前后各#行
-e:实现多个选择间的逻辑or关系
-w:整行匹配整个单词
-E:使用扩展的正则表达式 相当于egrep
-F:使用fgrep,不支持正则表达式 相当于fgrep
--color:将过滤出内容加上颜色显示
alias grep='grep --color=auto'
[root@centos6 ~ ::]#grep -i "^s" /proc/meminfo
SwapCached: kB
SwapTotal: kB
SwapFree: kB
Shmem: kB
Slab: kB
SReclaimable: kB
SUnreclaim: kB
[root@centos6 ~ ::]#grep "^[sS]" /proc/meminfo
基本正字表达式BRE:
字符匹配:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
以下是元字符:
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:所有字母
[:space:]:空白字符
[:alnum:]:所有字母及数字
[:punct:]:所有标点符号
[:graph:]:可打印的非空白字符;
[:blank:]:水平空白字符(空格和制表符)
[:cntrl:]:不可打印的控制字符(退格、删除、警铃)
[:pirnt:]:打印字符
[:xdigit:]:十六进制数字
# 显示/etc/grub2.cfg文件中,至少一个空白字符开头的且后面存非空白字符的行
grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg # 找出“netstat -ant” 命令的结果中以“listen”后跟0,1或多个空白字符结尾的行 netstat -ant |grep "listen[[:space:]]*$" # 注意,使用元字符时,字符本身的中括号外,还需要加一层中括号 # 添加用户bash,testbash,basher以及nologin,而且找出/etc/passwd 文件中用户名同shell名的行
useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin login
grep "^\([[:alnum:]]\+\>\).*\1$" /etc/passwd
# 显示/var目录下所有以L开头,以一个小写字母结尾,且中间出现至少以为数字的文件或目录 ls -d /var/L*[0-9]*[[:lower:]] # 显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
ls -d /etc/[[:digit:]]*[^[:digit:]] # 显示/etc目录下,以非字母开头,后面跟了一个字母及其其他任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
次数匹配:
用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*:匹配前面的字符任意次
.*:匹配任意长度的任意字符
\?:匹配前面的字符0次或1次
\+:匹配前面的字符至少1次,至多不限
\{M\}:匹配前面的字符M次
\{M,\}:匹配前面的字符至少M次,至多不限
\{M,N\}:匹配前面的字符至少M次,至多N次
位置锚定:
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^$:空白行,连space也不允许出现
^[[:space:]]*$:空白行或包含空白字符的行
\<或\b:词首锚定,出现在单词的左侧
\>或\b:词尾锚定,出现在单词的右侧
\<PATTERN\>:完整匹配单词
# 去除nginx.conf里面的的空行和注释行 grep -Ev "^$|#" nginx.conf
^$ 空行
| 或者
# 注释行开头字符
分组及引用:
\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
后向引用:
引用前面的分组括号中的模式所匹配的字符
分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部的变量中,这些变量的命名
方式为\1,\2,\3
\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配的字符
\(ab\+\(xy\)*\)
\1: ab\+\(xy\)*\
\2: xy
egrep及扩展正则表达式(Extandard RegExp):
字符匹配:
.:任意单个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符
次数匹配:
*:任意次
?:0次或1次
+:其前一次最少一次或多次
{m}:匹配其前字符m次
{m,n}:匹配其前字符最少m次,最多n次
位置锚定:
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^$:空白行,连space也不允许出现
\<或\b:词首锚定,出现在单词的左侧
\>或\b:词尾锚定,出现在单词的右侧
分组及引用:
():分组;括号内的模式匹配到的字符会被记录到正则表达式引擎的内部变量中
后向引用:\1,\2,\3....
或:
| a|b a或者b
文本处理三剑客之 grep/egrep的更多相关文章
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
- Linux文本处理三剑客之——grep
一Linux文本处理三剑客之——grep Linux文本处理三剑客都支持正则表达式 grep :文本过滤( 模式:pattern) 工具,包括grep, egrep, fgrep (不支持正则表达式) ...
- shell 文本处理三剑客之 grep 和 egrep
shell 三剑客之 grep 命令语法格式 grep 参数 案例 显示file中有python的行 grep python file 显示没有python的行,不忽略大小写 grep -v pyth ...
- 文本处理三剑客之 grep
grep简介 grep(Global search REgular expression and Print out the line)是Linux上的文本处理三剑客之一,另外两个是sed和awk. ...
- 【Linux相识相知】文本处理工具之grep\egrep\fgrep及正则表达式
常说Linux上有文本处理的三剑客,grep.sed和awk,本文就grep做出详细的描述,并引出正则表达式. grep NAME:打印模式匹配的行 SYNOPISIS: grep [OPTIONS] ...
- Linux 文本处理三剑客之grep
文本处理都要使用正则表达式,正则表达式有: 基本正则表达式:grep或者egrep -G 扩展正则表达式:egreo或者grep -E Linux 文本处理三剑客: sed:stream editor ...
- linux文本处理三剑客之 grep
文本处理无非是对文本内容做查看.修改等操作.Linux三剑客: grep.sed 和 awk 命令. 处理文本内容,用 Vim 编辑器不是很好吗?Vim 允许我们使用键盘.鼠标来对文本内容进行交互性地 ...
- Linux文本处理三剑客之grep
简介 grep命令,用于在一个文本文件中或者从STDIN中,根据用户给出的模式(pattern)过滤出所需要的信息. grep以及三剑客中的另外两个工具sed和awk都是基于行处理的,它们会一行行读入 ...
- 文本处理三剑客之grep&正则表达式
grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来.grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户. 一.gr ...
随机推荐
- 五种常用web服务器jvm参数设置
一.tomcat Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大.有以下几种方法可以选用:第一种方法:在配置文件中设置Windows下,在文件/bi ...
- 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...
- PyQt4(简单界面)
import sys; from PyQt4 import QtCore, QtGui; app=QtGui.QApplication(sys.argv); widget=QtGui.QWidget( ...
- 聊聊 getClientRects 和 getBoundingClientRect 方法
开始表演 今天来聊一下两个相似的方法,它们就是:getBoundingClientRect().getClientRects(). 只见它们俩手拉手地登上了舞台,一个鞠躬,便开始滔滔不绝起来. 自述 ...
- 转载:http://www.cnblogs.com/double-K/p/6926367.html
sql专家感悟:不可说的感悟-——十年老技术转型(一) http://www.cnblogs.com/double-K/p/6926367.html
- spring boot(12)-数据源配置原理
本篇讲的不仅是数据源配置,这也是spring boot实现自动配置的一部分.要理解数据源的配置原理,首先要理解第十篇tomcat连接池的配置 数据源配置源码 这里截取org.springframewo ...
- 第四章 数据库和SQL 4-3 数据的更新(UPDATE语句的使用方法)
一.UPDATE语句的基本语法. 二.指定条件的UPDATE语句(搜索型UPDATE) 三.使用NULL进行更新 NULL清空:使用UPDATE可以将列更新为NULL,俗称NULL清空. 四.多列更新 ...
- REST Framework组件的解析源码
首先我们要知道解析器的作用 解析器就是对你请求体中的数据进行反序列化.封装 把你的所有的请求数据都封装在request.data中 以后就在request.data中获取数据 我们先导入rest_fr ...
- 用CAShapeLayer写股市K线图动画效果
用CAShapeLayer写股市K线图动画效果 说明 入市有风险,炒股需谨慎.(因项目需求,本人提供了写这种效果的源码) 效果 源码 // // ViewController.m // Path // ...
- 搭建企业级全网数据定时备份方案[cron + rsync]
1.1.1. 服务端的配置[192.168.25.141] Rsync的端口是:873 man rsyncd.conf 查看帮助 Rsync是Redhat默认自带的,这里只是做了rsync服务器端的后 ...