分类: LINUX
2009-11-23 15:12:51
^表达一行的开始,$表示一行的结束。如:需要找出以 Subject开头的行。可以使用:
^Subject 使用egrep命令,则为:egrep ‘^Subject’ youfile
[root@unig20 abc]# cat test.txt
Subject:Your subject
From:xuanyuzheng@126.com
To:xuanyuzheng@sina.com
subject:your Subject
执行egrep '^Subject' test.txt命令,显示如下:
[root@unig20 abc]# egrep 'Subject' test.txt
Subject:Your subject
执行egrep 'Subject$' test.txt命令,显示如下:
[root@unig20 abc]# egrep 'Subject$' test.txt
subject:your Subject
其他 ^$表示一个空行。
[]意思是能匹配[]中所有字符的其中一个。如[abc]及可能是a或者是b
或者是c。如果要想搜索所有以subject开头的行,不区分大小写。我们可以
[root@unig20 abc]# grep '[Ss]ubject' test.txt
Subject:Your subject
subject:your Subject
还可以:
[root@unig20 abc]# egrep '(S|s)ubject' test.txt
Subject:Your subject
subject:your Subject
还可以:
[root@unig20 abc]# egrep -i 'subject' test.txt
Subject:Your subject
subject:your Subject
[Ss]和(S|s)的效果是一样的,但是[]和()还是有区别的。[]只能代表一个字符,()可以
代表很多,如(Sub|sub)意思是可以是Sub也可以是sub。egrep –i 选项的意思就是不区
分大小写。
但是如果^出现在[]里面就不是表示行的开始的意思了,而是表示非的意思,如[^abc]则
表示除了a\b\c以外的任意字符。如[^0-9] 则表示不是0,1,2,3,4,5,6,7,8,9的任意字符,-
在这里是连字符,不过如果-放在[]第一个位置就不是连字符了,就是普通字符-,如[-abc]
就是可能是-或者a或者b或者c。如果不是字母和数字就可以写成[^0-9a-zA-z]
[root@unig20 abc]# egrep 's[^u]' test.txt
To:xuanyuzheng@sina.com
.(dot)代表任意字符,不过.处于[]中就只是普通字符.的意思。
[root@unig20 abc]# egrep 's.*t' test.txt
Subject:Your subject
subject:your Subject
意思是搜索所有s 后面有若干字符或者没有字符后面有个t的行。
[root@unig20 abc]# egrep '[.]' test.txt
From:xuanyuzheng@126.com
To:xuanyuzheng@sina.com
搜索所有有普通字符.的行。
?代表它前面的字符项可有可无。
如colou?r既可以匹配colour也可以匹配color.
给test.txt添加两行:
colour match
color match
[root@unig20 abc]# cat test.txt
Subject:Your subject
From:xuanyuzheng@126.com
To:xuanyuzheng@sina.com
subject:your Subject
colour match
color match
[root@unig20 abc]# egrep 'colou?r' test.txt
colour match
color match