文本搜索grep知识点总结
文本搜索工具:grep, egrep
根据用户指定的模式对目标文件进行过滤,显示被模式匹配到的行
grep [OPTION]... 'PATTERN' FILE...
--color
难点在于模式如何书写,模式主要是应用正则表达式
正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,
而是表示控制或者统配的功能
元字符:*, ?等
两类:
基本正则表达式
扩展正则表达式
基本正则表达式:
字符匹配:
.: 匹配任意单个字符
例如:grep --color 'r..t' /etc/passwd
匹配到r开头,t结尾,中间间隔两个字符的行
[]:匹配指定集合中任意单个字符
[[:digit:]],[0-9]
[[:lower:]],[a-z]
[[:upper:]],[A-Z]
[[:alpha:]],[a-zA-Z]
[[:alnum:]],[0-9a-zA-Z]
[[:space:]]
[[:punct:]]
例如:grep --color 'abcd[[:digit:]][[:digit:]][0-9]' test
匹配以abcd开头,后边跟三个数字的行
[^]:匹配指定集合外的任意单个字符
例如:grep --color 'abcd[^[:digit:]]' test
grep --color 'abcd[^0-9]' test
匹配以abcd开头,后边不是数字的行
匹配次数:用于对其前面紧邻的字符所能够出现的次数作出限定
*:匹配其前面的字符任意次,0,1或多次
例如:grep 'x*y'
xy,xxy,xxxy,y
\?:匹配其前面的字符0次或1次,其中的\为转义字符,即转移?
例如:grep 'x\?y'
xy,xxy,y,xxxy,aby 对于xxy而言,确实匹配到了xy,第一个x是被忽略的
\+:匹配其前面的字符出现至少一次
例如:grep 'x\+y'
xy,xxy,xxxy
\{m\}:匹配前面字符m次
例如:grep 'x\{2\}y'
xxy,xxxy
\{m,n\}:匹配其前面字符至少出现m次,至多出现n次
例如:grep 'x\{2,4\}y'
xxy, xxxy
grep 'x\{2,\}y'
xxy,xxxy
.*:匹配任意长度的任意字符
位置锚定:
^: 行首锚定
写在模式的最左侧
例如:grep --color '^abcd' /etc/passwd
匹配以abcd开头的行
$: 行尾锚定
写在模式的最右侧
例如:grep --color '[0-9]$' /etc/passwd
匹配以数字结尾的行
^$:空白行
例如:grep --color '^$' /etc/passwd
匹配空白行
\<: 词首锚定, \b, \为转义字符
出现在要查找的单词模式的左侧,\<char
例如:grep --color '\<r' /etc/passwd
匹配以r开头的单词
\>: 词尾锚定, \b,\为转义字符
出现在要查找的单词模式的右侧,char\>
例如:grep --color 'tor\>' /etc/passwd
匹配以tor结尾的单词
\<pattern\>:匹配单词
例如:grep --color '\<root\>' /etc/passwd
匹配单词root
分组:
\(\)
后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,
如果\(\)的模式匹配到了某内容,此内容后面的模式中可以被引用;
\1,\2,\3
模式自左向右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容
例如:grep --color 'ab\{1,\}y' test
a与y之间至少一次b
grep --color '\(ab\)\{1,\}y' test
y之前至少一次ab
grep --color '\(ab\)\{1,\}y\1' test
y之前至少一次ab,且后边引用第一个分组
grep --color '\(ab\)\{1,\}y\2' test
y之前至少一次ab,且后边引用第二个分组
grep选项:
-v: 反向选取,即显示模式匹配之外的行
例如:grep -v --color 'abcd' test
显示abcd之外的行
-o: 仅显示匹配到的内容
-i: 忽略字符大小写
-n: 匹配的同时显示行号
-E: 使用扩展正则表达式
-A #:匹配到的下边#行
例如:grep -A 2 --color 'abcd' test
显示匹配abcd的行及其下边两行,共三行
-B #:匹配到的上边#行
-C #:匹配到的上下边#行
egrep及扩展的正则表达式
扩展正则表达式的元字符
字符匹配:
.
[]
[^]
匹配次数限定:
*
?: 匹配其前面字符0次或1次
+:匹配其前面字符至少1次
{m}:匹配其前面字符m次
{m,n}:{m,},{0,n}
锚定:
^
$
\<, \>: \b
分组:
()
支持后向引用:\1, \2...
或者:
a|b: a或者b
ab|cd:
例如: egrep --color 'ab|c' test
grep --color 'ab\|c' test
匹配含有ab或者c的行
grep --color 'a\(b\|c\)' test
匹配含有ab或者ac的行
例如:grep -E 'PATTERN' FILE...
egrep 'PATTERN' FILE...
文本搜索grep知识点总结的更多相关文章
- CentOS 文本搜索grep
grep 用于在文本中执行关键词搜索, 用法: grep [选项]... PATTERN [FILE]... [root@bigdata-senior01 ~]# grep "ftp&quo ...
- 整理grep实战文本搜索过滤技巧
一:grep的简介: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行.配合正则表达式的使用可以实现强大的文本处理.下面一一说明正则的例子. 二:文本处理工具分类 ...
- [linux] grep 文本搜索工具
grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...
- shell脚本学习指南-grep文本搜索命令-学习(3)
1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...
- grep文本搜索工具详解
############grep命令############这个命令属于文本处理三大命令之一,强大的文本搜索工具(贪婪模式)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达 ...
- 二、grep文本搜索工具
grep命令作为Unix中用于文本搜索的神奇工具,能够接受正则表达式,生成各种格式的输出.除此外,它还有大量有趣的选项. # 搜索包含特定模式的文本行: [root@centos8 ~]#grep p ...
- 基于文本图形(ncurses)的文本搜索工具 ncgrep
背景 作为一个VIM党,日常工作开发中,会经常利用grep进行关键词搜索,以快速定位到文件.如图: 利用grep进行文本搜索 但是,这一过程会有两个效率问题: 展示的结果无法进行直接交互,需要手动粘贴 ...
- linux下的文本操作之 文本查找——grep
摘要:你有没有这样的应用场景:调试一个程序,出现debug的提示信息,现在你需要定位是哪个文件包含了这个debug信息,也就是说,你需要在一个目录下的多个文件(可能包含子目录)中查找某个字符串的位置: ...
- (办公)记事本_grep文本搜索命令
参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show grep文本搜索命令:[是一种强大的文本搜索工具,它能使用正 ...
随机推荐
- bzoj3583 杰杰的女性朋友 || bzoj4362 Graph
http://210.33.19.103/problem/2174 很显然是矩阵快速幂的题,设有in和ou矩阵,设in矩阵的转置为in' 显然可以直接暴力求出任意两点间走一步路径条数,然后求其d次幂, ...
- Redis特点
内存存储,速度极快. 支持的数据类型多,相比较其他的Nosql. 键:字符串 值的六种数据结构:字符串,列表,散列,集合,有序集合,HyperLogLog 附加功能强大
- python_17(sql)
第1章 MySQL安装 1.1 windows版下载地址 1.2 添加环境变量 1.3 初始化 1.4 启动mysql服务 1.5 链接mysql 1.6 制作mysql的windows服务 1.7 ...
- Spark无法创建新线程
Spark提交程序报错,无法创建新的线程 原因是因为这台公用机器上跑的进程太多了,需要修改Linux参数,允许用户最大进程数 查看允许用户最大进程数配置 ulimit -a 修改允许用户最大进程数配置 ...
- ubuntu关闭cups服务(631端口)
本人使用的ubuntu10.10每次开机时使用nmap扫描127.0.0.1的时候总是能发现一个631端口开启,在/etc/services找到631端口是网络打印机服务,但对于我一个普通用户来说这根 ...
- ejb2.0用本地引用提高EJB访问效率
用本地引用提高EJB访问效率 EJB 1.0和1.1规范只定义了一种在EJB组件中引用另一组件的方法,即通过Bean的远程接口.如果两个Bean都在同一个容器之内,则这种网络开销是不必要的.为解决这个 ...
- vue分环境打包配置方法一
直接上代码配置: 首先是config下面的文件修改 dev.env.js 'use strict' const merge = require('webpack-merge') const prod ...
- POJ 2831 Can We Build This One?
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1728 Accepted: 643 Case Time Limit: 2 ...
- CSS声明各个浏览器私有属性的命名前缀
-moz代表firefox浏览器私有属性-ms代表IE浏览器私有属性-webkit代表chrome.safari私有属性-o代表opera私有属性
- Vue 打印预览功能
需求有几种情况: 1.直接在HTML写页面,将页面上的东西用A4纸打印出来: 2.后台传回PDF文件,前台浏览器预览并打印: 3.后台做好要打印的,传回图片,如base64编码,前台浏览器 预览并打印 ...