• shellday4


    1.grep程序

               linux下有文本处理三剑客 -- grep sed awk

               grep:文本 行过滤工具

               sed:文本 行编辑器(流编辑器)

               awk:报告生成器(做文本输出化格式化)

              grep

                    包含三个命令:grep egrep fgrep,它们是用来进行模式()匹配的

             grep用法:

                       grep [option]...PATTERN[fiename]

             grep的常见选项 -- optio

            -E  支持使用扩展的正则表达式(ERE)(regexp)

           -P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)

           -i  忽略大小

          -v 进行反选

           -o 仅仅输出匹配的内容 

          --color=auto 语法着色

         -n 显示行号

         -w  匹配固定的单词

    PATTERN--正则表达式

           作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊

    字符本身含义,就需要来进行转译

    -回顾:文件通配符(globbing)

    * ?[][ ^]

    1.字符匹配

    .  任意一个字符  ?

    [ ]范围内的任意一个字符

    [ ^]范围外的任意一个字符

     字符类:[:digit:][:alnum:] [ :alpha:] [:lower:]  [:upper:] [:space:] [:punct:]

    2.次数匹配

    *匹配前面的字符0次到无数次

    ?匹配前面的字符0次到一次

    +匹配前面的字符1次到n次

    {m,n}匹配前面的字符m次到n次

    {0,n}匹配前面的字符0次到n次

    {m,}匹配前面的字符至少m次

    3.位置锚定

        ^铆钉首行

        $锚定行尾

        铆钉词首,和锚定词尾

       >锚定词尾

       <锚定词首

       < oot>  rooter

    4.分组

     abc*   abcccc   abc我们要看看成一个整体

    () 示例:(abc)* abcabcabc abcccc

    **分组特性:默认情况下,Linux系统会分组指定变量,变量的表示形式123...

    (   ( 立秋  )已过  ),(香港)依旧不宁

    练习

    1.显示/proc/meminfo文件中s开头的行

      grep -i "^s" /proc/meminfo

    2.显示/etc/passwd 文件中不以/bin/bash结尾的行

    grep -v "bin/bash$" /etc/passwd

    3.显示/etc/passwd文件中UID号最大的用户的用户名

    sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1

    4.如果用户root存在,显示默认的shell程序

    grep "^root>" /etc/passwd &> /dev/null && grep "^root>" /etc/passwd | cut -d: -f7
    id root &> /dev/null && grep "^root>" /etc/passwd | cut -d: -f7

    5、找出/etc/passwd中的两位或三位数   

    grep "[0-9]{2,3}" /etc/passwd
    -w //匹配固定单词
    <[0-9]{2,3}>
    [0-9]{2,3}

    6.显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行

        grep '' ^[[:space:]] +.*[^[:space:]] $''  /etc/rc.d/rc.d/rc.sysinit

    7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
    netstat -tan | grep "LISTEN[[:space:]]*$"
    8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
    useradd bash /bin/bash
    useradd testbash
    useradd basher
    useradd -s /sbin/nologin nologin
    grep "(^[[:alnum:]]+>).*1$" /etc/passwd

  • 相关阅读:
    密码 (pasuwado)
    bzoj 4131: 并行博弈 (parallel)
    Beads
    bzoj2338数矩形(rectangle)
    数树数
    最近公共祖先(lca)
    在python中遍历字典元素
    加载本地json文件,并利用批处理调用Chrome显示html
    numpy保存数据
    Echarts 地理信息可视化:基于地图显示坐标点信息
  • 原文地址:https://www.cnblogs.com/qhlove/p/11360397.html
Copyright © 2020-2023  润新知