首页 > 代码库 > grep用法

grep用法

【1】

 grep他就是一个文本搜索工具。如果想查找文件可以 ls一下目录,用管道将其作为一个文件传递给grep进行搜索。他支持正则表达式,他将查询文件路径放在最后,查询条件拿引号引起来。还有两个一个是egrep以及fgrep。fgrep是fastgrep,他不支持正则表达式,当字面量查询条件,所以比较fast。

【2】正则表达式

如果相应知道要匹配的内容,我们需要知道,匹配的内容是什么,匹配了多少次,在哪出现。分别对应内容①②③

①基本正则表达式元字符:

.    : 这样一个小圆点,因为比较小,所以只能匹配单个任意字符。

[]   :这是一个中括号,一看到中括号就想到了开区间闭区间的范围,所以这个中括号代表的是匹配范围。

特殊几个字符:

用法[[:digit:]]

digit:0-9  lower:a-z upper:A-Z  alnum :数字字母

space: 空白回车制表符 punct: 特殊字符 alpha: 大小写字母 

[^] : 这个中括号里面有个刺头,这就是逆反,也就是里面条件取反来匹配搜索。取不是a的[^a]

有了基本的匹配元字符这种正则表达式中专用的匹配字符,还需要明确匹配多少次的才是所需要的,总不能匹配文本连用一堆......。

②次数匹配元字符:

*          : 这个代表他前面的那个字符出现的次数可以像晚上的星星一样多,也可以像白天的星星一样一颗都没有。

\?         : 这个符号的意思是在问,“有还是没有”,所以这个符号代表前面一个字符出现了0次或者1次

\{m\}   : 注意括号的写法是一个“\”带着一个左括号\{,一个“\”带着一个右括号\}。因为括号里面是确定的m,所以匹配的次数就是精确的M次。

\{m,n\}: 看到括号就相当范围,所以是m次到n次

③出现的位置可以是:行首,行尾,行中某单词左侧或右侧。

行首:^  行尾:$ 单词左侧:\<  单词右侧\>

【3】命令选项

-v : 反项选择

-o : only。仅显示匹配的字符串,而非字符串在的行

-i  : ignore。忽略大小写

-E : extend。扩展正则表达式

-A: 连带显示底下一行

-B: 连带显示上面一行

-C: 连带显示上下两行

例:显示当前目录中以大小写字母开头的,第二个字母是a第三个第四个分别不是t不是e,最后是不知道具体数目的数字或者字母

ls -l | grep "[[:alpha:]]a[^te][[:alnum:]]*"  

grep用法