《鸟哥的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 ...
随机推荐
- java-类的定义和用法
1.类的定义 public class Human{ }//每个源文件必须也只能有一个public类 class boy{ }//可以定义多个class类 class girl{ } 上面的类定义好后 ...
- Hibernate笔记3--多表操作-导航查询
一.一对多操作 1.构造实体类及编写配置文件: 一方: // 一个Customer对应多个linkman private Set<Linkman> linkmans = new ...
- PagedList.Mvc只有一行时不显示分页
PagedList.Mvc默认总是显示分页,可以通过设置DisplayMode在只有一行时不显示分页 @Html.PagedListPager(Model, page => Url.Action ...
- Dll注入:Ring3 层 APC注入
APC,即Asynchronous procedure call,异步程序调用APC注入的原理是:在一个进程中,当一个执行到SleepEx()或者WaitForSingleObjectEx()时,系统 ...
- Codeforces 744A. Hongcow Builds A Nation
A. Hongcow Builds A Nation 题意: 现在有 n 个点 ,m 条边组成了一个无向图 , 其中有 k 个特殊点, 这些特殊点之间不能连通 ,问可以再多加几条边? 因为$x^2+y ...
- java Vamei快速教程07 包
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...
- window.onload中调用函数报错的问题
今天练习js,忽然遇到了一个问题,就是window.onload加载完成后,调用其中的函数会报错, 上一段简单的代码: 报错信息: 报错原因: 当window.onload加载完成后,第一个alert ...
- IOS storyboard(控件器的 生命周期)
@interface NJTwoViewController () @end @implementation NJTwoViewController // 当控制器的view加载完毕就调用 - (vo ...
- hdu-1198 Farm Irrigation---并查集+模拟(附测试数据)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1198 题目大意: 有如上图11种土地块,块中的绿色线条为土地块中修好的水渠,现在一片土地由上述的各种 ...
- Object comparison - (BOOL)isEqual:(id)other
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Obje ...