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中使用正则表达式

在命令模式下进行

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

转载于:https://www.cnblogs.com/west000/p/6387774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值