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或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。
 

7. grep的更多相关文章

  1. grep 查找bash脚本中的注释代码

    出于安全性的考虑,不建议在bash脚本中注释掉不使用的代码.也就是说如果某段代码不使用了,那么应该删除掉,而不是简单地注释掉.假如你突然意识到这一点,而以前并没有遵从这个原则,现在需要找出脚本中的注释 ...

  2. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  3. linux中grep的应用

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  4. Linux命令-文件文本操作grep

    文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...

  5. 4-4 grep及正则表达式

    1. grep:Globally search a Regular Expression and Print:根据模式搜索文本,并将符合模式的文本行显示出来 pattern:文本字符和正则表达式的元字 ...

  6. grep 命令过滤配置文件中的注释和空行

    grep 用法 Usage: grep [OPTION]... PATTERN [FILE]... Search for PATTERN in each FILE or standard input. ...

  7. sed awk grep三剑客常用

    sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...

  8. awk命令和grep命令的使用

    1.遇到需求:用ping命令去检测系统网络延迟 跑 ping baidu.com -c 3,想要直接得到平均延迟. ping baidu.com -c 3 | grep rtt | awk -F \/ ...

  9. grep 命令

    简单介绍:grep命令是用于分析一行信息,若当中有我们所需要的信息,就将该行取出来. 语法结构:grep [-acinv] [--color=auto] '查找关键字' #{filename} -a: ...

  10. 使用git grep进行git搜索

    1.git grep foo 会自动map所有包含foo的文件 2.git grep -n foo  显示行号 3.git grep --name-only foo 只显示文件名 4.git grep ...

随机推荐

  1. 关于博主skywang123456文章——二叉堆(三)之 Java的实现的质疑

    博客园博主skywang123456(以下简称s博主)是一个大牛级的人物,相信很多程序员都拜读过他的博客,我也不例外,并且受益匪浅.但是对于文章二叉堆(三)之 Java的实现我有一些疑惑,写在这里,供 ...

  2. c#系统泛型委托

    Action<T> 无返回值的系统泛型委托 namespace ConsoleApp1 { public class UserInfo { public int Id { get; set ...

  3. CodeForces - 1202F You Are Given Some Letters... (整除分块)

    题意:一个字符串包含a个A和b个B,求这个字符串所有可能的循环节长度(末尾可能存在不完整的循环节) 好题,但思路不是很好想. 首先由于循环节长度可以任意取,而循环次数最多只有$O(\sqrt n)$个 ...

  4. cookie的使用和设置

    cookie就是服务端通过浏览器端的存储机制,把一些会话相关数据存储在浏览器中.优点:分担服务端的压力,提高了效率,缺点:不安全 生成和请求原理 cookie的生命周期设定以后,哪怕是关闭浏览器,那么 ...

  5. flutter TextField 输入框被软键盘挡住的解决方案

    以前搞ionic1~4的开发中 和react-native   flutter中的机制完全不同, 在flutter 中 当前页面如果存在元素被软键盘挡住 的情况 页面元素的最外层肯定得嵌套一层   S ...

  6. BZOJ 2759 一个动态树好题 (LCT)

    PoPoQQQ 再一次orz-没看得特别明白的可以回来看看蒟蒻的补充口胡 我这里提一下关于splaysplaysplay维护的子树信息- 在原树上考虑,对于每一个点iii都有这样一个信息xi=ki∗x ...

  7. Java学习 1.5——静态Static的作用与用法

    在网上查阅资料,静态大约分为这几部分:修饰成员变量:修饰成员方法:静态代码块:静态导包,下面会用代码一一展示: 修饰成员变量: 一个类中,使用static修饰成员变量后,该变量变为全局变量,当再次ne ...

  8. 报错Too many connections

    com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establish ...

  9. 彩色模型,CIE XYZ,CIE RGB

    学习DIP第8天 转载请标明出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意. ...

  10. ubuntu16.0.4 设置静态ip地址

    由于Ubuntu重启之后,ip很容易改变,可以用以下方式固定ip地址 1.设置ip地址 vi /etc/network/interface # The loopback network interfa ...