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. string::assign

    string (1) string& assign (const string& str); substring (2) string& assign (const strin ...

  2. Anaconda 下 Jupyter 更改默认启动路径和默认浏览器

    1.Jupyter 更改默认启动路径方法 输入jupyter notebook --generate-config 会生成jupyter_notebook_config.py 找到文件,并打开 将 # ...

  3. python之抽象类&abc模块+虚拟子类&register

    抽象类和接口: java 我们先从java讲起,没有java基础的可以略过. (挖坑) python 在python并没有抽象类之说,或者说抽象类=接口类(区别于接口) 继承有两种用途: 一:继承基类 ...

  4. [转]Normal Map中的值, Tangent Space, 求算 Tangent 与 Binormal 与 TBN Matrix

    原文出处 https://www.cnblogs.com/lookof/p/3509970.html - Normal Map中的值 -   有没有想过,Normal Map(法线贴图)为什么看上去都 ...

  5. 【Python之路】特别篇--服务商API认证、Restful、一致性哈希

    API加密方式 1/ 加密方式: Md5 (随机字符串 + 时间戳) 2/ 发送方式: http://127.0.0.1:8888/index?pid= MD5加密值 | 时间戳 | 序号 服务端接收 ...

  6. Can't load Microsoft.ReportViewer.ProcessingObjectModel.dll

    本机的时候是能正常看到report,但deploy到别的机器上却不行,按说从本机拷个dll过去就可以,但怎么也找不到. 原来要在cmd那里输入C:\WINDOWS\assembly\GAC_MSIL ...

  7. boost 函数与回调

    result_of 含义:result_of可以帮助程序员确定一个调用表达式的返回类型,主要用于泛型编程和其他boost库组件,它已经被纳入TR1 头文件:<boost/utility/resu ...

  8. Bzoj 1798: [Ahoi2009]Seq 维护序列seq(线段树区间操作)

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小可 ...

  9. 【csp模拟赛2】 爆搜 方格加数

    [题目描述] xyz1048576正在玩一个关于矩阵的游戏. 一个n*m的矩阵,矩阵中每个数都是[1,12]内的整数.你可以执行下列两个操作任意多次: (1)指定一行,将该行所有数字+1. (2)指定 ...

  10. OI程序常见的设计陷阱

    宏定义的问题 有时候为了方便,我会大量使用宏定义.但是最近我发现下面这两个宏定义老是出问题: #define SET(x,a) memset(x,a,sizeof(x)) inline void wo ...