码迷,mamicode.com
首页 > 系统相关 > 详细

linux grep命令使用的一些心得

时间:2015-06-23 16:00:36      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:linux grep 基础命令 使用方法

这里提到的主要是在bash的suse11环境下的grep命令,以避免因系统环境的不同而导致命令执行后导致与描述的不同。

grep是根据指定条件,逐行进行匹配,并将匹配内容的行显示出来的类unix工具

语法:

grep [options] PATTERN file1 …


常用参数(options):

-v   对结果取反

-i: 忽略字母大小写

-o:仅显示匹配到的字符串

-E :支持扩展正则表达式

-A n:往下多显示n

--color:不同的颜色显示被匹配的内容



PATTERN:配置模式,通常使用正则表达式而正则通常分为下面两类

                basic regexp;基本正则表达式 grep仅支持这个

                extended regexp 扩展正则表达式,egrep支持,grep需要加参数-E来支持

基本正则基础:


.:匹配任意单个字符 r..t 匹配rt之间的任意两个字符的单词,如rootrcctrdct

[]:指定范围内的任意单个字符,如[abc],匹配abc

[^]:指定范围内相反的任意单个字符,如[^ab],匹配ab之外的单个字符

[:upper:]表示所有大写字母

[:lower:]表示所有小写字母

[:digit:]所有数字

[:alpha:]所有字母

[:alnum:]包含数字和字母

[:space:]所有空白字符,包括空格和tab

[:punct:]所有标点符号

正常使用为[[:upper:]],而这类取反,则[^[:upper:]]。

*:匹配其前面的字符任意次 ab*c,匹配abbcabcabbbbcacaccb任意次包括0


例子


linux1:~ # grep "r[a-z]*t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash

上面结果与下面命令结果一致:
 grep "r[[:lower:]]*t" /etc/passwd

.*:匹配任意长度的任意字符,贪婪模式,即能匹配多长就匹配多长,最长为一行

X\{m,n\}:表示X至少出现m次,至多出现n次,比如X\{m,\}X\{0,n\}

 

? :匹配次数的符号,匹配前面的字符0次或1

锚定符

^:表示行首匹配,不出现在[]内。

      ^r..t:匹配出现在行首的r后跟任意两个字符,再加t

$:锚定行尾

     ^$:锚定空白行

\<:锚定词首 也可以写成\b

     \<r..t :匹配r出现词首的字符串(出现非字母则该单词结束)

\>:锚定词尾 也可以写成\b,然后出现的位置不同。

     r..t\>

 

\(\):先对字符分组,然后通过\1,\2来引用第1分组,第2分组等等

例子:

文件2内容如下

He love his lover

She like her liker

找出文件内容中使用单词和该单词+r的单词

linux1:/home/test # grep "\(l..e\).*\1r" 2
He love his lover.
She like her liker.

扩展正则表达式

基本的元字符中\(\)改为()用于分组

基本的元字符中\{\}改为{}

+:次数匹配,匹配其前的字符至少一次

a|b:或者,表示ab都行


本文出自 “测试的律动” 博客,请务必保留此出处http://fociceo.blog.51cto.com/2480/1664430

linux grep命令使用的一些心得

标签:linux grep 基础命令 使用方法

原文地址:http://fociceo.blog.51cto.com/2480/1664430

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!