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)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...
随机推荐
- codevs 1160 蛇形矩阵x
题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该 ...
- HDU 6582 Path
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...
- c++复习——临考前的女娲补天 >=.<
一些零零散散的知识点... 1.抽象类只能作为其他类的基类,不能建立对象,但抽象类的派生类如果给出纯虚函数的函数体,这个派生类仍然是一个抽象类.//这个好理解 懂了 2.抽象类不能作为参数类型,函数的 ...
- 高通camera基本代码架构【转】
本文转载自:http://blog.sina.com.cn/s/blog_c0de2be70102vyn1.html 1 camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循 ...
- HTML - form 表单提交
form 表单提交 数据发送 disabled:不发送 display_none:发送 type_hidden:发送 readonly:发送 测试 html: <!DOCTYPE html> ...
- python使用__new__创建一个单例模式(单例对象)
#单例模式:使一个类只产生一个对象.他们的id地址都指向同一个内存地址 第一步:理解谁创建了对象 # 单例模式# 首先明白,我们在创建一个类的对象的时候,其实是调用的这个类的父类,即继承object, ...
- 5 centos 6.10 三节点安装apache hadoop 2.9.1
Hadoop 版本: apache hadoop 2.9.1JDK 版本: Oracle JDK1.8集群规划master(1): NN, RM, DN, NM, JHSslave1(2): DN, ...
- Bootstrap 学习笔记 项目实战 首页内容介绍 上
效果图: HTML代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset ...
- spring中@Autowired与 @Resource区别
@Autowired 与@Resource的区别: 1. @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2. @Autowired默认 ...
- python爬虫——爬取淘票票正在热映电影
今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...