Linux系统中grep支持搜索文本中指定字符串,并打印。全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
格式:
grep [options]
返回值0表示所搜成功,1表示没有搜索到,2表示所搜的文件不存在。
常用的选项:
-c:只输出匹配行的计数。
[root@master ~]# grep -c 'table' create.hql
2
-n:显示匹配行及行号。
[root@master ~]# grep -n "birthday" create.hql
1:create table customer ( customerID INT, firstname STRING, lastname STRING, birthday TIMESTAMP ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
2:create external table customer ( customerID INT, firstname STRING, lastname STRING, birthday TIMESTAMP ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/train/salaries';
-v:显示不包含匹配文本的所有行。
[root@master ~]# grep -v "LOCATION" create.hql
create table customer ( customerID INT, firstname STRING, lastname STRING, birthday TIMESTAMP ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-q:安静模式,不打印任何标准输出。如果有匹配的内容则立即返回状态值0。
[testhadoop@sz-7-centos186 ~]$ grep -q "beeline" test.sh
[testhadoop@sz-7-centos186 ~]$ echo $?
0
-w:精确匹配。
-o:只显示匹配上的字符串。
-r:在指定目录循环递归的搜索。
-E:扩展全局正则表达式,可以识别更多的正则表达式元字符,例如at + ? | 和()。
或关系匹配
与关系匹配,既匹配“external”,“customer”:
[root@master ~]# cat create.hql | grep "customer" | grep "external"
create external table customer ( customerID INT, firstname STRING, lastname STRING, birthday TIMESTAMP ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/train/salaries';