10-正则表达式-grep

作业一:正则表达式

在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的

  1. 正则表达式分类

    • 基本正则表达式
    • 扩展的正则表达式
    • Perl正则表达式
  2. 基本组成部分

grep命令

  1. 选项

    -a 不要忽略二进制数据。
    -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
    -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
    -c 计算符合范本样式的列数。
    -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
    -e<范本样式> 指定字符串作为查找文件内容的范本样式。
    -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
    -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
    -F 将范本样式视为固定字符串的列表。
    -G 将范本样式视为普通的表示法来使用。
    -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
    -H 在显示符合范本样式的那一列之前,标示该列的文件名称。
    -i 忽略字符大小写的差别。
    -l 列出文件内容符合指定的范本样式的文件名称。
    -L 列出文件内容不符合指定的范本样式的文件名称。
    -n 在显示符合范本样式的那一列之前,标示出该列的编号。
    -q 不显示任何信息。
    -R/-r 此参数的效果和指定“-d recurse”参数相同。
    -s 不显示错误信息。
    -v 反转查找。
    -w 只显示全字符合的列。
    -x 只显示全列符合的列。
    -y 此参数效果跟“-i”相同。
    -o 只输出文件中匹配到的部分。
    
  2. grep命令常见用法

    文件中查找一个单词:

    grep match_pattern file_name
    grep "match_pattern" file_name
    

    多个文件中查找:

    grep "match_pattern" file_1 file_2 file_3 ...
    

    输出除之外的所有行 -v 选项:

    grep -v "match_pattern" file_name
    

    使用正则表达式 -E 选项:

    grep -E "[1-9]+"
     egrep "[1-9]+"
    

    只输出文件中匹配到的部分 -o 选项:

    echo this is a test line. | grep -o -E "[a-z]+\."
    line.
    echo this is a test line. | egrep -o "[a-z]+\."
    line.
    

    统计文件或者文本中包含匹配字符串的行数 -c 选项:

    grep -c "text" file_name
    

    在多级目录中对文本进行递归搜索:

    grep "text" . -r -n
    

    选项 -e 制动多个匹配样式:

    echo this is a text line | grep -e "is" -e "line" -o
    is
    line
    

作业二:grep作业

  1. 显示出所有含有root的行:

    cat /etc/passwd | grep root
    root:x:0:0:root:/root:/bin/bash
    
  2. 输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
    [[email protected] ~]# grep -C ‘2‘ bash /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    --
    chrony:x:996:994::/var/lib/chrony:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    ads247admin:x:1000:1000::/home/ads247admin:/bin/bash
    cx2c:x:1001:1001::/home/cx2c:/bin/bash
    
  3. 显示出有多少行含有nologin。
    [[email protected] ~]# grep -c ‘nologin‘ /etc/passwd
    22
    
  4. 显示出那些行含有root,并将行号一块输出。
    [[email protected] ~]# grep -n ‘root‘ /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    10:operator:x:11:0:operator:/root:/sbin/nologin
    
  5. 显示出文件中
  6. 新建用户 abominable

    abominate

    anomie

    atomize

    编写正则表达式,将他们匹配出来

    [[email protected] ~]# adduser abominable
    [[email protected] ~]# adduser abominate
    [[email protected] ~]# adduser anomie
    [[email protected] ~]# adduser atomize
    [[email protected] ~]# egrep ‘^a[a-z]omi[a-z]*‘ /etc/passwd
    abominable:x:1002:1002::/home/abominable:/bin/bash
    abominate:x:1003:1003::/home/abominate:/bin/bash
    anomie:x:1004:1004::/home/anomie:/bin/bash
    atomize:x:1005:1005::/home/atomize:/bin/bash
    
  7. 建四个用户 Alex213sb

    Wpq2222b

    yH438PIG

    egon666 egon
    过滤出用户名组成是字母+数字+字母的行

    [[email protected] ~]# adduser Alex213sb
    [[email protected] ~]# adduser Wpq2222b
    [[email protected] ~]# adduser yH438PIG
    [[email protected] ~]# adduser egon666egon
    [[email protected] ~]# egrep ‘([a-Z]+)([0-9]+)([a-Z]+)‘ /etc/passwd
    ads247admin:x:1000:1000::/home/ads247admin:/bin/bash
    cx2c:x:1001:1001::/home/cx2c:/bin/bash
    Alex213sb:x:1006:1006::/home/Alex213sb:/bin/bash
    Wpq2222b:x:1007:1007::/home/Wpq2222b:/bin/bash
    yH438PIG:x:1008:1008::/home/yH438PIG:/bin/bash
    egon666egon:x:1009:1009::/home/egon666egon:/bin/bash
    
  8. 显示出/etc目录下所有包含root的文件名

    grep -rl

    [[email protected] ~]# grep -rln "root" /etc/
    /etc/pki/ca-trust/ca-legacy.conf
    /etc/pki/ca-trust/extracted/README
    /etc/pki/ca-trust/extracted/java/README
    /etc/pki/ca-trust/extracted/java/cacerts
    /etc/pki/ca-trust/extracted/openssl/README
    /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
    /etc/pki/ca-trust/extracted/pem/README
    /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
    /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
    /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
    ...
    
  9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行
    egrep -v "^$|^#" /etc/ssh/sshd_config | sed  ‘s/#.*.//g‘
    

作业三:

  1. Linux下源码安装Python并设置PATH

    // readline-devel python shell里 方向键可用
    // 机器默认是2.7,安装完之后需要把python命令链接到3.6 
    
    yum -y install zlib zlib-devel gcc readline-devel
    wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
    xz -d Python-3.6.1.tar.xz
    tar -xvf Python-3.6.1.tar
    cd Python-3.6.1/
    ./configure
    make all
    make install
    rm /bin/python
    ln -s /usr/local/bin/python3.6 /bin/python  //设置默认python3.6为默认python
    
  2. windows下安装python,并设置PATH

选做题:

  1. 一键是部署nginx、nfs
  2. 编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件
  3. 编写计划任务,定时运行监控脚本,完成监控操作

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video { margin: 0; padding: 0; border: 0 }
body { font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 1.6; color: #333; background-color: #fff; padding: 20px; max-width: 960px; margin: 0 auto }
body>*:first-child { margin-top: 0 !important }
body>*:last-child { margin-bottom: 0 !important }
p,blockquote,ul,ol,dl,table,pre { margin: 15px 0 }
h1,h2,h3,h4,h5,h6 { margin: 20px 0 10px; padding: 0; font-weight: bold }
h1 tt,h1 code,h2 tt,h2 code,h3 tt,h3 code,h4 tt,h4 code,h5 tt,h5 code,h6 tt,h6 code { font-size: inherit }
h1 { font-size: 28px; color: #000 }
h2 { font-size: 24px; border-bottom: 1px solid #ccc; color: #000 }
h3 { font-size: 18px }
h4 { font-size: 16px }
h5 { font-size: 14px }
h6 { color: #777; font-size: 14px }
body>h2:first-child,body>h1:first-child,body>h1:first-child+h2,body>h3:first-child,body>h4:first-child,body>h5:first-child,body>h6:first-child { margin-top: 0; padding-top: 0 }
a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6 { margin-top: 0; padding-top: 0 }
h1+p,h2+p,h3+p,h4+p,h5+p,h6+p { margin-top: 10px }
a { color: #4183C4; text-decoration: none }
a:hover { text-decoration: underline }
ul,ol { padding-left: 30px }
ul li>:first-child,ol li>:first-child,ul li ul:first-of-type,ol li ol:first-of-type,ul li ol:first-of-type,ol li ul:first-of-type { margin-top: 0px }
ul ul,ul ol,ol ol,ol ul { margin-bottom: 0 }
dl { padding: 0 }
dl dt { font-size: 14px; font-weight: bold; font-style: italic; padding: 0; margin: 15px 0 5px }
dl dt:first-child { padding: 0 }
dl dt>:first-child { margin-top: 0px }
dl dt>:last-child { margin-bottom: 0px }
dl dd { margin: 0 0 15px; padding: 0 15px }
dl dd>:first-child { margin-top: 0px }
dl dd>:last-child { margin-bottom: 0px }
pre,code,tt { font-size: 12px; font-family: Consolas, "Liberation Mono", Courier, monospace }
code,tt { margin: 0 0px; padding: 0px 0px; white-space: nowrap; border: 1px solid #eaeaea; background-color: #f8f8f8 }
pre>code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent }
pre { background-color: #f8f8f8; border: 1px solid #ccc; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px }
pre code,pre tt { background-color: transparent; border: none }
kbd { background-color: #DDDDDD; background-image: linear-gradient(#F1F1F1, #DDDDDD); background-repeat: repeat-x; border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD; border-style: solid; border-width: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 10px; padding: 1px 4px }
blockquote { border-left: 4px solid #DDD; padding: 0 15px; color: #777 }
blockquote>:first-child { margin-top: 0px }
blockquote>:last-child { margin-bottom: 0px }
hr { clear: both; margin: 15px 0; height: 0px; overflow: hidden; border: none; background: transparent; border-bottom: 4px solid #ddd; padding: 0 }
table th { font-weight: bold }
table th,table td { border: 1px solid #ccc; padding: 6px 13px }
table tr { border-top: 1px solid #ccc; background-color: #fff }
table tr:nth-child(2n) { background-color: #f8f8f8 }
img { max-width: 100% }

时间: 2024-10-29 19:12:10

10-正则表达式-grep的相关文章

grep与正则表达式,grep、egrep和fgrep

grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:1基础正则表达式grep 工具,以前介绍过.grep -[acinv]   '搜索内容串'   filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v

基本正则表达式grep应用

前言 正则虐我千百遍,我待正则如初见. --煌朝 xxx:grep 水很深 : xxx:grep 水不深 正则表达式深: xxx:水都深,我已经淹死在里面了: xxx:正则 是永远都填不完的坑: 以上是同学们对于正则表达式的积极讨论结果. 一.那么被大家视如洪水猛兽的正则表达式到底是什么呢, 1.  从概念上讲,正则表达式是对字符串操作的一种逻辑公式,就是要事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

正则表达式-grep命令

1. 基本的正则表达式  grep  ^a      表示匹配以a开头的行; a$ 表示匹配以a结尾的行; ^$ 表示空白行; . 表示匹配任意一位字符; * 表示匹配其前面字符的任意次(可以是0次); .* 表示匹配任意字符任意次; \?     表示匹配前面字符1次或0次; a\{3,5\}表示匹配前面字符的至少3次,最多5次; [a-z]   表示匹配任意一个字母; [a-Z]   表示匹配任意一个字母(不区分大小写); [1-9] 表示匹配任意数字; [^1-9]  表示匹配不是数字;

通配符和正则表达式-grep,egrep,fgrep

通配符和正则表达式-grep,egrep,fgrep 通配符和正则表达式,通配符用于文件名匹配,命令支持ls,cp,rm等;正则为通用匹配,命令支持grep,awk,sed,vi,find等.文本过滤工具grep,egrep,fgrep 通配符 *  匹配零个或多个任意字符 ?  匹配单个任意字符 [] 匹配指定范围内的一个字符,[]括号中的 字符间隔符 可以省略,如,\=:等等.举例[1:2=3,5\7] = [12357],也推荐使用这种省略写法作为标准 ^  取反,表示非.注意:非数字即包

正则表达式grep学习(一)

文本处理三剑客grep       文本过滤sed       流过滤awk       格式处理 正则表达式就是一些特殊字符组成的模式,赋予了他特定的含义 在大多数程序里,正则表达式都被置于两个正斜杠之间:例如/l[o0]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式.在正则表达式中,元字符是最重要的概念. 正则表达式的作用: 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置.程序.命令输出以及日志文件等,而我们经常会有迫切的

Linux Basics 正则表达式 grep

grep全称是:Global search Regular Expression and Printing全局搜索正则表达式并显示出来 使用正则表达式来描述选择条件. 取行选择:选取行的筛选条件,给定选取条件,只显示符合条件的行,或者只显示不符合条件的行. 对于类似的操作有三个命令:grep; egrep; fgrep grep:默认支持基本正则表达式: egrep:扩展正则表达式: fgrep:不支持正则表达式元字符,搜索字符串的速度快: 正则表达式是一类字符所书写的模式(pattern)  

正则表达式grep、egrep、fgrep

日期: 2015年08月27日 正则表达式: (RegularExpression,在代码中常简写为rex.regexp或RE) 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.通常被用来检索.替换符合某个模式的文本. 正则表达式是指一类字符书写的模式(pattern)这些字符成为元字符,元字符不表示其字面意义,而用于表示通配或控制功能. 正则表达式包括两类:基本正则表达式,扩展正则表达式 grep命令只支持基本正则表达式: egrep支持扩展正则表达式("e" 表

正则表达式grep和egrep的基本使用

正则表达式grep和egrep的使用 正则表达式(REGular EXPression REGEXP)就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序.正则表达式中的模式(pattern)以正则表达式的元字符,以及正常字符组合而成. 正则表达式的字符串依照不同的严谨度而分为基础正则表达式与扩展正则表达式. 一.基础正则表达式(grep) Grep全称: Global search Regular

Linux学习之正则表达式&grep&egrep

我们经常需要在文档中搜索符合自己要求的内容,这些部分可能分散在文档的各个位置,各个角落.可以利用关键字例如/keyword或者?keyword一个一个的搜索,还有我可能不止想搜索关键字,而是指定一个范围,怎样操作?而且怎样把这些搜索到的内容集中地显示出来?使用正则表达式搜索字串的grep命令和egrep命令就可以满足我们的这个要求. 正则表达式(Regular Expression)是一种字符书写的模式,以行为单位进行字符的处理,透过一些特殊字符的辅助,利用这种模式可以轻易地达到对字符的搜索.删