首页 > 代码库 > 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用法