grep用法简介之二

上一篇文章总结了一些grep基本用法。在这次的内容里介绍grep和正则表达式结合使用的方法。

  • 首先介绍下正则表达式,正则表达式非基本和扩展两种。

名词释义:正则表达式:正则表达式其实就是描述某些复杂规则字符串的代码集合。

元字符:在正则表达式中具有特殊意义的专用字符

  • 正则表达式

基本正则表达式元字符:

^ :表示行首  
 $ :表示行尾    
 ^$:表示空白行    
 * :表示星之前字符的0个或任意个字符,例如:a*:表示0个a或任意一个a的字符,所以就是全显示出来了。    
 .  :表示任意单个字符    
[ ] :表示匹配指定范围内的任意单个字符,例如:[a-z],[A-Z],[0-9]    
[^] :括号中的^表示取反    
 \? :表示紧挨在?前面的字符的0次或1次    
 \{m,n\}:匹配其前面的字符,至少M次至多N次,例如: 0到3次:\{0,3\},至少3次,至多不限:\{3,\},精确匹配M次:\{m\}    
 \<  :锚定单词词首    
 \>:锚定单词词尾    
 \(\):分组功能,即把括号中的字符当初一个字符来匹配,例如:\(ab\)\{3\}:结果就是包含“ababab”才能匹配, \(a.b\).*\1: 其中的\1表示引用了“\(a.b\)

扩展正则表示元字符:

扩展正则表达式  
 +:表示匹配前面的字符至少1次    
 ():分组,不需要转义符,支持引用\1,\2    
 |:表示与(c|C)    
 {m,n}:不需要转义符,至少m次最多n次

  • 用法举例:

1、显示/proc/meminfo文件中以不区分大小的s开头的行

  #grep "^[Ss]" /proc/meminfo
SwapCached:            0 kB
SwapTotal:       4095992 kB
SwapFree:        4095992 kB
Shmem:              3468 kB
Slab:             118580 kB
SReclaimable:      57644 kB
SUnreclaim:        60936 kB

2、显示/etc/passwd中以nologin结尾的行

# grep "nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

3、显示/etc/rc.d/rc.sysinit中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行

#grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/rc.d/rc.sysinit
# /etc/rc.d/rc.sysinit - run once at boot time
# Taken in part from Miquel van Smoorenburg‘s bcheckrc.
# Check SELinux status
# Print a text banner.
# Only read this once.
...
ps: [:space:]表示空格

4、找出ifconfig命令结果中的1-255之间的整数

[[email protected] ~]# ifconfig | grep -o -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
29
71
10
101
10
255
255
255
255
64
1
13
2
5
4
...

5、找出ifconfig命令结果中的ip地址

ifconfig | egrep -o --color=auto "\<([0-9]{1,2}|1[0-9]{2}|2[0-5]{2})\.([0-9]{1,2}|1[0-9]{2}|2[0-5]{2})\.([0-9]{1,2}|1[0-9]{2}|2[0-5]{2})\.([0-9]{1,2}|1[0-9]{2}|2[0-5]{2})\>"
10.0.0.101
10.0.0.255
255.255.255.0
127.0.0.1
255.0.0.0

grep用法简介之二

时间: 2024-10-10 19:49:38

grep用法简介之二的相关文章

grep用法简介之一

grep是Linux中个非常重要也是经常使用的文本搜索工具,最近又回顾学习了一遍,趁热自己总结一下. Linux中关于grep的命令一共有三个(以centos6.4为例) grep  :只支持基本正则表达式 egrep :支持扩展正则表达式,此命令其实是 "grep -E" 的别名 fgrep : 不支持正则表达式,搜索速度在3个命令中最快. grep命令用法格式: grep [OPTIONS] PATTERN [FILE...] 主要参数 --color=auto :使匹配的字符用彩

grep过滤用法介绍(二)

grep过滤用法介绍(二) 背景:(1)alias cgrep='grep --color' (2)cp /etc/passwd  1.txt 1. cgrep -n 'root' 1.txt 包含root所在,行数. 2. cgrep -v 'nologin' 1.txt 不包含nologin. 3. cgrep '[0-9]' 1.txt 包含所有0-9中间数字包含任意一个的行. 4. cgrep '[a-zA-Z]' 1.txt 过滤所有字母. 5.cgrep '^[a-z]' 1.txt

[转]window.showModalDialog以及window.open用法简介

一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法:window.open(pageURL,name,parameters) 其中:pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三.示例:<SCRIPT> <!-- window.open ('page.html','newwindow','height=100,width=400,

InputStreamReader 和 OutputStreamWriter类用法简介及演示

最近正好在学java,对文件流比较感兴趣,因为C的文件操作算是比较简单的,没想到java弄得很复杂啊! 现在说说下面这两个类! InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通向字符流的桥梁.如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK. 构造方法: InputStreamReader isr = new InputStr

MSSQL Sql加密函数 hashbytes 用法简介

转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashbytes函数功能为:返回一个字符,通过 MD2.MD4.MD5.SHA.SHA1.SHA2_256.SHA2_512方式加密后的返回值 hashbytes(‘参数1’,’参数2’) 参数1:输入加密类型 例:MD5参数2:输入待加密的字符串(加密字符串最大值为 8000字节)返回值:返回值最大为8000字节注意事项:当输入加密类型,异常时,返回NULL 二.ms

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

display:table-cell的用法简介

display:table-cell的用法简介:display属性的使用相当频繁,比如display:block或者display:inline等,但是对于display:table-cell可能比较陌生,因为此属性在特定的情况下会发挥很大的作用,下面就简单介绍它的作用,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

Intent用法简介

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为:            Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xm