09.grep

◊基本框架:

a)         grep命令

b)         正则表达式

c)         grep中使用正则表达式

d)         vi中使用正则表达式

9.1   grep命令

命令格式:grep  [option]  pattern  +  文件列表

常用的option:

-E     用扩充的正则表达式进行模式匹配

-i      不区分大小写

-n     显示行号

-v     反向匹配(匹配不符合要求的)

-l     返回匹配到的文件名称

-r     递归搜索

  在多个文件中进行查找时,文件列表中可以使用通配符*

9.2   正则表达式

定义:描述具有某种特征的字符串的表达式。

正则表达式包含普通字符和特殊字符(元字符)。

元字符集分为两类:基本的元字符集和扩充的元字符集。

9.2.1基本的元字符集:

  ^   行首开始匹配

  $   行尾进行匹配

   找空行的方法: grep  –n  ^$  filename

  \<  从单词的开头进行匹配

  3种方法:(若查找public)

   grep  -n  ‘\<public’   filename(多用单引号的方法)

   grep  -n  “\\<public”  filename

  grep  -n   \\\<public  filename

  执行机理:

    grep命令中的pattern字段先被shell解析,然后再将解析后的结果提交给grep字段。

    单引号可以抑制shell对pattern字段特殊字符的解析,将pattern字段原封不动的提交给grep 。

    而双引号只能抑制部分符号(比如说括号),但它不能抑制\和$等。

    Shell和grep都将\视为转义字符(特殊字符)。

  \>  从单词的末尾进行匹配

  .   对单个字符进行匹配

  查找只有一个字符的行:   grep  -n  ^.$  filename

  [str]    对str中的任意单个字符进行匹配

  [^str]   对任意不在str中的单个字符进行匹配

  [a-b]    对a到b之间的任何字符进行匹配

  \    抑止后面的一个字符的特殊含义

     查找\的三种方法:

    1.   grep   -n  ‘\\’    filename(多用单引号的方法)

     2.   grep   -n  “\\\\”  filename

    3.   grep   -n   \\\\   filename

  *   对前一项进行0次或多次重复匹配

9.2.2扩展的元字符集:

使用扩展的元字符集grep的格式为:  grep  -E   或为   egrep

    +       对前一项进行1次或多次重复匹配

    { j }     对前一项进行j次重复匹配

    { j , K }   对前一项进行j到k次重复匹配

    s|t      匹配s项或t项中的一项

    (exp)    将exp 作为单项处理

9.3   vi中使用正则表达式

例子: 删除aa到zz的所有字符:            1,$  s/aa.*zz//

将整个文件中所有的and替换成&:     1,$  s/and/ \&/g

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

在每一行的末尾插入字符串@@:     1,$  s/$/@@

去掉所有行首的数字字符:             1,$  s/^[0-9][0-9]*//

时间: 2024-10-06 06:16:34

09.grep的相关文章

grep Demo

最近在学习Linux的几个非常强大的命令awk, sed, grep. 之前对这些命令只是有非常皮毛的了解. 最近稍微深入的对这些命令进行一些学习.sed的主要功能如下: @1: 正则匹配某个字符串. @2: grep具备递归搜索文件/目录功能. #!/bin/bash #File: grepDemo.sh #Author: lxw #Time: 2014-08-21 #Usage: Demonstration for grep. main(){ #The following 2 lines a

grep,egrep,,fgrep 与正则

一.grep grep [option] PATTERN [FILE...] 根据模式搜索文本,并将符合模式的文本行显示出来 Pattern: 文本字符和正则表达式的元字符组合而成的元字符 -i 忽略大小写 --color 匹配字符高亮 例子 grep --color 'root' /etc/passwd -v 反向显示,匹配到的不显示,显示没有匹配到的行 -o 只显示被模式匹配到的字符串 alias grep='grep --color' grep 'root' /etc/passwd 二.正

locate和grep命令

这任然是一篇读书笔记,以下内容来源<linux命令速查手册>这本书. 1.locate命令 用文件名或者文件名的部分来搜索文件在系统中的位置.locate不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb).这个数据库包含本地所有文件爱你信息.linux创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatadb命令,手动更新数据库. 常用形式: locate hello.txt 

文本处理(grep,vim),正则表达式

文件查看: cat [OPTION]... [FILE]...-E:显示行结束符$-n:对显示出的每一行进行编号-A:显示所有控制符-b:非空行编号-s:压缩连续的空行成一行 tac :内容倒过来显示 rev :每行倒过来显示 more:分页查看文件more [OPTIONS...] FILE...-d: 显示翻页及退出提示例:ls -R /etc/ | more ,它翻到最后就退出了 less:一页一页地查看文件或STDIN输出查看时有用的命令包括:/文本 :搜索 文本n/N :跳到下一个 或

第6天grep正则表达式 ,vim,shell概念

grep ,egrep ,fgrepfgrep不支持正则表达式搜索 ,只支持普通字符串过滤grep -E grep -F grep是两个合在一起grep root /etc/passwdgrep "$USER" /etc/passwd 可以过滤变量结果grep 'root' /etc/passwd 可以过滤字符串grep whoami /etc/passwd 可以过滤命令结果grep abc 寻找adc 包含abc字符串就显示 PATTEN字符串 也可以是文件grep是包含字符串就全都

grep,sed,awk 个人总结

正则表达式 ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g' #用/ # 均可 理论可用任何特殊字符替代 #sed -r 后面可跟扩展正则 扩展正则 + (.*) ifconfig |sed -n 2p |sed -r 's#^.*inet (.*) Broast.*$#\1#g' # \1 代表正则中的第一个GROUP 即(.*)里的内容 ifconfig |sed -nr '2s#^.*inet (.*)net.*$

监视磁盘使用情况的Shell脚本(本地+远程)

任何一个分区使用到90%就发送一个邮件给指定的收件人,到95%就在邮件主题出警告(warning),说明发送邮件程序EMAIL #!/bin/bash #Updated:2008-03-03 PM By:leif([email protected]) EMAIL=/usr/local/bin/email /bin/df -h >/tmp/df.txt USE=`df -H | grep -o [0-9]*% | grep -o '[0-9]\+'` for i in $USE do if ((

shell脚本:收集系统和各种服务的状态信息

脚本功能:收集系统和各种服务的状态信息 ------------------ #!/bin/bash # get system and services status # by colin # revision on 2015-10-15 ######################################## # 功能说明:该脚本用于收集系统和各种服务的状态信息 # # 部署脚本时,加参数请注意参数顺序,否则会影响传上去的数据解析结果 #+ 命令:sh system_status_v3

shell脚本:检查ftp日志存储服务器上的日志是否正常上传

脚本:check_log.sh 主要功能:用于检查日志文件是否上传到ftp服务器,若未上传的,则发邮件报警 ------------------- #!/bin/bash #Auto check log files and notice by email #By colin #Revision on 2015-11-03 # #Useage: ./check_log.sh /home/upload/  # 10 * * * * /root/check_log.sh # #############