Linux--shell grep与正则表达式--04
一、grep程序
Linux下有文本处理三剑客:grep、sed、awk
grep:文本 行过滤工具
sed:文本 行编辑器(流编辑器)
awk:报告生成器(做文本输出格式化)
1、grep
grep包含三个命令:grep、egrep、fgrep,他们是用来进行 行模式(patten)匹配的
egrep == grep -E
fgrep == fast grep
grep默认使用正则表达式进行文本匹配
2、grep的用法
grep [option]… PATTEN [filename]
3、grep的常见选项
-E 支持使用扩展的正则表达式(regexp)
-P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk 使用的regexp引擎也不相同)
-i 忽略大小写
-v 进行反选
-o 仅仅输出匹配的内容(默认输出匹配到的行
--color=auto 语法着色
-n 显示行号
-w 匹配固定的单词
4、PATTEN—正则表达式
作用:通过一些特殊字符,来表示一类字符内容,交给前面的命令来执行;如果使用特殊字符本身含义就需要使用 \ 进行转义
a) 文件通配符: * ? [ ] [^ ]
b) 字符匹配:
. 任意一个字符
[ ] 范围内的任意一个字符
[^ ] 范围外的任意一个字符
字符类:
[:alnum:] 字母+数字
[:alpha:] 字母
[:upper:] 大写字母
[:lower:] 小写字母
[:digit:] 数字
[:punct:] 表示特殊字符
[:space:] 空格 ^[[:space:]]*$ 有空格键的空行
c) 次数匹配
* 匹配前一个字符0次到多次 .*表示任意长度的任意字符
\? 匹配前一个字符0次到1次
\+ 匹配前一个字符1次到n次
\{m\} 匹配前一个字符m次 a\{7\} == aaaaaaa
\{m,n\} 匹配前一个字符m到n次
\{0,n\} 匹配前一个字符0到n次
\{m,\} 匹配前一个字符至少m次
d) 位置锚定
^ 锚定行首
$ 锚定行尾
\b 锚定词首和锚定词尾
\> 锚定词尾
\< 锚定词首
e) 分组 分组的特性:默认情况下,Linux系统会为分组指定变量,变量的表示形式为\1 \2 \3 …
\(\) 实例: \(abc\) 把abc看成一个整体匹配
练习:
1、显示/proc/meminfo文件中大小s开头的行
grep -i "^s" /proc/meminfo
2、显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" /etc/passwd
3、显示/etc/passwd文件中UID号最大的用户的用户名
sort -n -t: -k3 /etc/passwd | tail - | cut -d: -f1
4、如果用户root存在,显示其默认的shell程序
grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
5、找出/etc/passwd中的两位或三位数
grep "[0-9]\{2,3\}" /etc/passwd
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
netstat -tan | grep "LISTEN[[:space:]]*$"
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
useradd bash /bin/bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd
Linux--shell grep与正则表达式--04的更多相关文章
- [Linux 006]——grep和正则表达式
在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...
- Linux之grep及正则表达式
grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...
- SHELL —— grep命令+正则表达式
一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 你可能会想 ...
- linux shell中的正则表达式
正则表达式的使用 正则表达式,又称规则表达式.(英语:Regular Expression [ˈreɡjulə] 规则的 [ iksˈpreʃən] 表达 ),在代码中常简写为regex.regexp ...
- linux shell grep/awk/sed 匹配tab
处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...
- linux命令grep及正则表达式
- linux shell 删除满足正则表达式的文件
用find配合xargs rm find . -type f -name "to_delete_file_[a-z]_*_[0-9].jpg" | xargs rm
- linux grep和正则表达式
虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下.最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的.在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟 ...
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...
随机推荐
- 洛谷P1199 三国游戏——题解
题目传送 显然,在这样的数据范围下搜索是没希望的了.好好分析一下,发现小涵时不可能拿到与一个武将最默契的另一个武将了.所以考虑一下默契值次大的一对武将. 显然,对每一个武将来说,小涵是可以拿到默契值次 ...
- CSS的一些单位,如rem、px、em、vw、vh、vm
总结了一下一些单位的不同 px:像素(pixel)相对长度单位,,是相对于屏幕显示器分辨率而言的: em:em的值并不是固定的,会集成父级元素的字体大小: 注意: 1.body选择其中声明Font-s ...
- Qmake: Q_OBJECT
QMake 为Qt的预编译,例:当在代码中使用 Q_OBJECT 宏,需要执行QMake操作,否则编译通不过.
- UOJ37. 【清华集训2014】主旋律
http://uoj.ac/problem/37 题解 题目是让我们求出有多少个边集可以使这张图强连通. 先补集转化一下,求这张图不强连通的方案数. 我们考虑这样的图缩完点之后的情况,既然不强连通,那 ...
- 170814-17关于javaweb的知识点
1. 静态web项目.动态web项目区别 WEB-INF ...
- str_pad()函数
str_pad - 使用另一个字符串填充字符串为指定长度 <?php $str = 'hello world '; echo str_pad($str,20,'·'); ?> 结果 ...
- javascript 动态修改css样式方法汇总(四种方法)
在很多情况下,都需要对网页上元素的样式进行动态的修改.在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用.效果.以及缺陷. 1.使用obj.className来修改样式表的类名. ...
- lateral view 使用方法
这个函数相当于拆开行变成列. 可以理解为行转列. select id,order_label from table_bx lateral view explode(split(work_order_l ...
- 05 使用bbed跳过归档恢复数据文件
5 使用BBED跳过归档 在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复 1 开启归档 --shutdown immediate --startup mount --alter data ...
- Map m=new HashMap()
Map<String,String> m=new HashMap<String,String>() 等于 HashMap<String,String> hashMa ...