《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式
一、grep命令
grep:根据模式搜索文本,并将符合模式的文本行显示出来
模式:由文本字符和正则表达式的元字符组合成的匹配条件
命令格式:grep [options] [file...]
[root@hao log]# grep 'root' /etc/passwd
root:x:::root:/root:/bin/bash
operator:x:::operator:/root:/sbin/nologin
命令选项:
-i(ignore case):忽略字符大小写
--color[=when]:高亮显示匹配字符,常用因此使用命令别名以便方便使用
root@hao ~]# grep --color 'root' /etc/passwd
root:x:::root:/root:/bin/bash
operator:x:::operator:/root:/sbin/nologin
[root@hao ~]# alias 'grep=grep --color'
[root@hao ~]# grep 'root' /etc/passwd
root:x:::root:/root:/bin/bash
operator:x:::operator:/root:/sbin/nologin
-v:显示没有被模式匹配到的行
-A n:表示匹配行后n行也显示
-B n:表示匹配行前n行也显示
-C n:表示匹配行前后n行都显示
-o:只显示被模式匹配到的字符串
[root@hao ~]# grep -o 'root' /etc/passwd
root
root
root
root
二、基本正则表达式元字符
首先创建测试文件
[root@hao ~]# cat /tmp/test.txt
a
b
ab
aab
acb
adb
amnb
amnbmnbmnb
元字符:
. : 匹配任意单个字符
* :匹配其前面的字符任意次
.* : 匹配任意长度的任意字符
\?:匹配其前面的字符1次或零次
\{m,n\}:匹配其前面的字符至少m次,至多n次。下面为a出现至少一次,之多三次之后是b
^:锚定行首,此字符后面的任意内容都必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行
\<:其后面的任意字符必须作为单词首部出现
\>:其前面的任意字符必须作为单词的尾部出现
[]:匹配指定范围内的单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:] [:lower:][:upper:][:punct:][:space:][:alpha:][:alnum:]:字符集合
以数字结尾的行:
\(\):分组。如下代码匹配ab组合出现任意次。
分组主要目的是为了后向引用,也就是被括号括起来的内容,在以后再次引用。\1代表引用前面出现第一个小括号的内容。
三、扩展正则表达式元字符 (grep -E=egrep)
元字符与上面相同的是
- .
- []
- [^]
- *
- ?没有反斜线
- {m,n} 没有反斜线
- ^
- $
- ^$
- \<
- \>
- ()没有反斜线
不同的是:
+:匹配其前面的字符至少一次
|:或者or的意思。C|cat的意思是C或者cat。(C|c)at代表Cat或者cat。以至少一个空白字符开头的行:
《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式的更多相关文章
- 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻
连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...
- 鸟哥的Linux私房菜学习笔记——文件权限与目录配置
Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...
- 鸟哥的Linux私房菜学习笔记(1)
2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...
- 【鸟哥的Linux私房菜】笔记1
Linux是什么 从操作系统与cpu架构关系到linux Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...
- 鸟哥的linux私房菜学习-(一)优缺点分析以及主机规划与磁盘分区
一.linux的优缺点 那干嘛要使用Linux做为我们的主机系统呢?这是因为Linux有底下这些优点: 稳定的系统:Linux本来就是基于Unix概念而发展出来的操作系统,因此,Linux具有与Uni ...
- 【鸟哥的Linux私房菜】笔记2
Linux的应用 学习资源整理 安装记录 >< 1.Linux的应用: 网络服务器 数据库 学术机构的高效运算任务 嵌入式系统 ... 2.挂载与磁盘分区 学习资源整理 学习 1.书上的网 ...
- 【鸟哥的Linux私房菜】笔记3
正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...
- 《鸟哥的Linux私房菜》笔记——02. 关于Linux
Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...
- 《鸟哥的Linux私房菜》笔记——03. 磁盘分区
Everything is a file. 常见硬件对应于 Linux 下的文件(/dev目录下) 装置 装置在Linux内的档名 SCSI/SATA/U盘硬盘机 /dev/sd[a-p] U盘 /d ...
- 鸟哥的linux私房菜学习
cat /etc/shells 系统拥有的shellcat /etc/passwd 记录用户使用的shell按两次 tab 键可显示所有可执行的指令alias 查看所有命令的别名alias lm='l ...
随机推荐
- ASP.NET MVC ValidationAttribute 服务器端自定义验证
自己开发的公众号,可以领取淘宝内部优惠券 客户端验证 上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证.所以仅有客户端的验证还是不够的,我们还需要在服 ...
- (转载)ASP.NET Quiz Answers: Does Page.Cache leak memory?
原文地址:http://blogs.msdn.com/b/tess/archive/2006/08/11/695268.aspx "We use Page.Cache to store te ...
- C 碎片四 流程控制
前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍C语言中流程控制的三种结构:顺序结构.分支结构.循环结构 一.顺序结构 顺序结构的程序设计是最简单 ...
- 数据库(JDBC、DBUtils)
JDBC(Java DataBase Connection) 今日内容介绍 u SQL语句查询 u JDBC 第1章 JDBC 1.1 JDBC概述 JDBC(Java Data Base Conn ...
- bootstrap Table 服务端处理分页 后台是.net
要考虑函数可被可重复使用(调用),需要将可变化的变为参数封装起来 function HQCreatTables(ob) { var option = { method: 'get', dataType ...
- Counting blessings can actually increase happiness and health by reminding us of the good things in life.
Counting blessings can actually increase happiness and health by reminding us of the good things in ...
- css禁止文字被选中
有时候,为了让用户有更好的体验,需要禁用掉文本选中功能 比如:使用a标签模拟按钮,如果不禁用掉文本选中功能,那么双击时会选中文字,用起来很不爽. 多数情况下,只需要使用CSS样式就可以实现这个功能啦: ...
- python3.7 安装 xlrd 模块---Mac
要用Excel将数据和代码分离,需要import xlrd, 使用前需要先安装xlrd模块. 说明:通过在google中搜索“xlrd Mac”,下载xlrd.py模块(下载地址:http://mac ...
- Mysql数据库学习总结(一)
数据库概念 数据库(Database)是按照数据结构来组织.存储和管理数据,建立在计算机存储设备上的仓库. 简单说,数据库就是存放数据的仓库.和图书馆存放书籍.粮仓存放粮食类似. 数据库分类 分为 关 ...
- [VC]strcpy和strncoy的区别
第一种情况:char* p="how are you ?";char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p ...