grep命令

1. grep简介

grep是通用正则表达式分析程序(General Regular Expression Parser)的缩写。
grep命令可以在它的输入中搜索指定的字符串模式。grep输出的是包含输入中指定的字符串模式的行。
一般格式为:grep [option] pattern file

grep命令常用开关(option)

开关 描述
-E 用扩充正则表达式进行模式匹配
-i 不区分大小写
-n 在每一输出行前显示文件内的行号
-q 与其他命令一起使用时,抑止输出显示
-s 抑止文件的出错信息
-v 反向匹配
-l 返回匹配到的文件名称
-r 递归搜索

2. 正则表达式

基本元字符 描述
^ 在每行的开始进行匹配
$ 在每行的末尾进行匹配
< 在单词的开始进行匹配
\> 在单词的末尾进行匹配
. 对单个字符进行匹配
[str] 对str中的任意单个字符进行匹配
[^str] 对任意不在str中的单个字符进行匹配
[a-b] 对a和b之间的任何字符进行匹配
\ 抑止后面的一个字符的特殊含义
  • | 对前一项进行零次或多次重复匹配
     
扩展元字符 描述
  • | 对前一项进行一次或多次重复匹配
    ? | 对前一项进行0次或1次重复匹配
    {?} | 对前一项进行j次重复匹配
    {j,} | 对前一项进行至少j次重复匹配
    {,k} | 对前一项进行至多k次重复匹配
    {j, k} | 对前一项进行j到k次重复匹配
    s | t | 匹配s项或t项中的一项
    (exp) | 将exp作为单项处理

3. grep中使用正则表达式

注意:
(1) 由于在shell环境下使用grep命令, shell会对一些特殊字符进行转义处理,为了防止这种情况,有两种解决方案:
(a) 单引号:阻止shell对特殊字符的解析
(b) 双引号:只能阻止部分的字符,比如()[]等,不能阻止shell对\和$的解析
很多时候都使用单引号!
(2) 对于扩展元字符,grep需要使用-E选项!

命令 解释
grep -n public *.txt 在当前目录下的所有.txt文件中查找包含public的行
grep -l public *.txt 输出包含public的文件名
ps aux | grep 'ssh' | grep -v 'grep' 输出包含ssh的进程,但排除包含grep的项
grep -lr telnet /etc 递归搜索目录etc中的所有文件,输出包含telnet的文件名

4. vi中使用正则表达式

在命令模式下进行

命令 用途
😒/aa.*zz// 在当前行中删除从aa到zz的所有字符
:1,$s/&/and/g 在整个文件用and替换所有的&字符。如果没有g,则替换每一行中的第一个&
:1,$s/and/&/g 在整个文件用&替换所有的and。注意&需要使用\进行转义
:1,$s/^/new/g 在每一行的行首插入字符串new
:1,5s/$/@@ 在第1行到第5行的行尾插入字符串@@
😒/[1][0-9]*// 去掉行首的所有数字字符

  1. 0-9 ↩︎

posted @ 2017-02-10 20:19  west000  阅读(164)  评论(0编辑  收藏  举报