zoukankan      html  css  js  c++  java
  • shell ——Day 4

    1、grep程序与正则表达式

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

    grep  --行过滤器

    sed   ---行编辑器(流编辑器)

    awk  ---报告生成器

    grep作用:只做文本过滤,挑选出满足条件的内容:在cpu中运行

           用法:group [OPTIONS] PATTERN [E...]

           扩展:命令格式

                      command[选项][参数]

                      xl create  xl 挂起  xl start     xl console

                      command sub camm[选项][参数]

    grep 常用选项:

                  -v 取反

                  -E指定使用扩展正则表达式(默认匹配时使用标准正则表达式)

                   -i 忽略大小写

                   -c统计匹配行数

                   -o 只显示匹配内容

                   -n 显示行号

                   -w固定单词(词首,词尾锚定)

    PATTERN

    模式匹配 grep默认支持正则表达式;
    globbing 文件通配符:* ? []  [^]  字符集
    经常用来匹配文件名
    正则表达式 -- 一般用来匹配文件内容;
    每一种语言所支持的正则表达式引擎是不同的,其中Perl语言的正则表达式引擎的查找效率是最高的;
      1、字符匹配
        .  代表任意单个字符 a.b abb  a%b  a*b aab  acb
        []  表示中括号里面的任意一个字符  a[cd]b  acb/adb
        [^]  表示对中括号的内容进行取反  a[^0-9]b a9b aab
      2、次数匹配
    代表前面一个字符出现任意次数(包括0次)  a*b  aaaab ab b
       ?  代表匹配前面的一个字符 0次 或 1次
       +  表示匹配前面的一个字符 1次 到 n次
       {n}  匹配前面一个字符 n次
       {n,m}  匹配前面的一个字符 n次 到 m次(m>n)
       {0,m}  匹配前面的一个字符 0次 到 m次
       {m,}   匹配前面一个字符 m次以上
    例:grep --color= auto "a*b" 1.txt
    vi 1.txt
    a
    aaab
    acb
    aab
    ab
    b
    

    3、位置锚定
    ^  锚定行首
    $  锚定行尾
    空行表示:^$   ^[[:space:]]*$
    例:取掉nginx.conf中的空行
    [root@lsl ~]#vi 3.txt  //在这里写一些东西

    [root@lsl ~]# grep -v "^[[:space:]]*#" 3.txt | grep -v "^$"

        放在词首就是锚定词首,放在词尾就是锚定词尾( word  wordcount countword )
       <  锚定词首
       >  锚定词尾
      -w 指定一个固定单词;
    例:锚定词尾
    [root@lsl ~]#grep "h>" 3.txt
    

     4、分组      

    word*  wordddddd   wordwordwordword
       ()   (word)*  将前面的字符串视为一个整体,去进行0次或多次匹配
       后向引用 
       (手势)识别的原理并不复杂,它通过硬件(捕获)自然信号,就像相机2图片(信息)那样,然后通过软件算法计算得到手的位置、姿态、
       1等,处理成计算机可以理解3。
       示例:(ab+(xy)*) *  其中 1 = ab+(xy)* , 2 = xy  
        abxyabxyabxy   abxyxyabxyxy ab
     
    练习:
    1、显示/proc/meminfo文件中大小s开头的行
     
     
    2、显示/etc/passwd文件中不以/bin/bash结尾的行
     
     
    3、显示/etc/passwd文件中UID号最大的用户的用户名
     
     
    4、如果用户root存在,显示其默认的shell程序
     
     
    5、找出/etc/passwd中的两位或三位数
    6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
    [root@lsl ~]# grep "^[[:space:]]+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
    
    7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
    8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):
          而后找出/etc/passwd文件中用户名同shell名的行
                    useradd bash
                    useradd testbash
                    useradd basher
                    useradd -s /sbin/nologin nologin
     
     
    9、MAC地址如何匹配
  • 相关阅读:
    block和delegate的区别
    iOS真机测试友盟碰到错误linker command failed with exit code 1 (use -v to see invocation) 百度地图的检索失败 sqlite 错误码
    iOS国际化多语言设置
    获取本机ip地址
    iOS-Senior19-FMDB第三方应用
    iOS-Senior17-CoreAnimation动画
    iOS-Senior18-CocoPods的安装步骤
    iOS-Senior17-UIView动画
    iOS-Senior17-菊花风火轮(代码)
    iOS-Senior17-Gif动画图片(代码)
  • 原文地址:https://www.cnblogs.com/Blockblogs/p/11552571.html
Copyright © 2011-2022 走看看