7. grep

 grep命令

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

 

 

正则表达式

何为正则表达式:描述具有某种特征的字符串的表达式。
正则表达式由 普通字符特殊字符(元字符)
 
  • 基本元字符集
 
' '和" ",单引号和双引号的区别
实例:查找'\'
grep -n '\\' t1.txt (\)
grep -n "\\" t1.txt grep:Trailing backslash
grep -n "\\\\" t1.txt
 
剖析:
  双引号只能阻止部分特殊的字符:()、[]、{}
  不能阻止shell对 ‘\’ 的解析,所以grep -n "\\" t1.txt 送给grep的是‘\’
 
 
  • 扩展元字符集
 

 

 

grep中使用正则表达式

  • grep命令示例
grep ^public t1.txt       //在每行的开始对public字符进行匹配
grep public$ t1.txt        // 在每行的末尾对public字符进行匹配
grep -n ^$ t1.txt        // 查找空行
grep -n ^.$ t1.txt        // 查找只有一个字符的行
grep -n '\<public' t1.txt    // 在单词public的开始进行匹配
grep -n 'public\>' t1.txt   // 在单词public的末尾进行匹配
grep -n "\\\\" t1.txt     // 查找'\'
grep -n '\\' t1.txt      // 查找'\'
   注意:单引号'' 和双引号""的区别
 
查询多个文件,可以使用通配符 "*"
  grep public *.txt
 
反向匹配
  ps aux | grep "ssh" | grep -v "grep"   // -v 反向匹配,即找出所有不包含“grep”的项
 
递归搜索目录中的所有文件:-r
  grep -rn telnet /etc   // -r 递归搜索,即找出目录/etc下所有包含内容telnet的文件行
 
返回匹配到的文件的名称
  grep -ln clear *.txt   // -l 返回匹配到的文件的名称
 

 

 

vi中使用正则表达式

  • 正则表达式在vi中的使用例子
在当前行中删除从aa到zz的所有字符。
   :s/aa.*zz//      .*:表示任意的0个或多个任意字符
 

 

在整个文件用and代替所有的&字符
   :1,$s/&/and/g
 

 

在每一行的行首插入字符串new
   :1,$s/^/new/g
 

 

在第2行到第5行的行尾插入字符串@@
   :2,5s/$/@@/g
 
去掉行首的所有数字字符
   :s/^[0-9][0-9]*//
 

 

  • 稍复杂的一个例子

foo(10,7,2) foo(7,10,2)
foo(x+13,y-2,10) foo(y-2,x+13,10)
foo(bar(8),x+y+z,5) foo(x+y+z,bar(8),5)
:1,$s/foo(\([^,]*\),\([^,]*\),\([^)]*\))/foo(\2,\1,\3)/g
[^,] 除了逗号之外的任何字符
[^,]* 0或者多个非逗号字符
\([^,]*\) 将这些非逗号字符标记为\1,这样可以在之后的替换模式表达式中引用它
\([^,]*\), 我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。
 

转载于:https://www.cnblogs.com/ming-1012/p/10096719.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值