grep与文本处理工具

grep:基本正则表达式,-E  -F

egrep:扩展正则表达式,-G -F

fgrep: 不支持正则表达式,-F 

egrep:

         支持扩展的正则表达式实现类似于grep文本过滤功能; grep -E

         egrep [OPTIONS] PATTERN [FILE….]

        -l, -o, -v, -q, -A, -B, -C

          -G:支持基本正则表达式

   扩展正则表达式的元字符:

           字符匹配:

          . :任意单个字符

          []: 指定范围内的任意单个字符

          [^]:指定范围外的任意单个字符

次数匹配:

        *:任意次,0,1或多次;

        ?:0吃货1次,其前的字符是可有可无的;

        + :其前字符至少1次;

       {m}: 其前的字符m次;

       {m,n}:至少m次,至多n次;

               {0,n}

               {m,}

    位置锚定

           ^:行首锚定;

           $:行尾锚定

           \>,\b: 词尾锚定;

      分组及引用:

             ():分组:括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中;

               后向引用:\1,\2,….

     或:

           a|b: a或b :

           C|cat: C或cat

           (c|C)at: cat或Cat

练习:1、找出/proc/meminfo文件中,所有在大写或小写S开头的行;至少有三种实现方式:

    ~]# grep -i "^s" /proc/meminfo

    ~]# grep  "^[sS]" /proc/meminfo

    ~]# grep  -E "^(s|S)" /proc/meminfo

2、显示当前系统上root、centos或user1用户的相关信息;

    ~]# grep -E"^(root|centos|user1)\>" /etc/passwd

3、找出/etc/rc.d/init.d/functions文件中某些单词后面跟一个小括号的行;

     ~]# grep -E -o "[_[:alnum:]]+\(\)" /etc/passwd 

4、使用echo命令输出一绝对路径,使用egrep取出基名;

       ~]#  echo /etc/sysconfig/ |grep -E-o "[^/]+/?$"

5、找出ifconfig命令结果中的1-255之间的数值;

       ~]# ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

6、课外作业:找出Ifconfig命令结果中的IP地址;

7、添加用户bash,testbash,basher 以及nologin(其shell为/sbin/nologin/;而后找出/etc/passed文件中用户名同shell的行;

        ~]# grep -E  "^([^:]+\).*\1$" /etc/passwd

fgrep :不支持正则表达式元字符;

         当无需要用到元字符取编写模式是,使用fgrep 必能更好;

文本查看仅处理工具:wc,  cut , sort,  unig, diff, patch

       wc: word count

       wc:[OPTION]…[FILE]…

        -l:lines

        -w:words

        -c: bytes

cut:

     cut OPTION…[FILE]…

            OPTION:

             -d CHAR:以指定的字符为分隔符

             -f FIELDS: 挑选出的字段;

              #:指定的单个字段

              ##:连续的多个字段;

              #‘#:离散的多个字段;

sort:

       sort [OPTION]…[FILE]…

               -n 基于数值大小而非字符进行排序;

               -t CHAR; 指定分隔符:

              -k#: 用于排序比较的字段;

              -r :逆序排序;

              -f: 忽略字符大小写

              -u:  重复的行只保留一份;

                     重复行  

uniq:

        report or omit repeated lines报告或移除重复的行

        uniq [OPTION]…[INPUT [OUTPUT]]

              -c: 统计每一行重复出现的次数

              -u:仅显示未重复非行

              -d:仅显示重复过的行;

diff: compare files line by line 逐行比较文件中的内容

         diff [OPTION]…FILES 

         diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE> /PATH/TO/PATCH_FILE

           -U:使用unfied机制,即显示要修改的行的上下文,默认为3行;

patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_ILE

l练习:取出ifconfig eno16777736命令结果中的ip地址;

原创文章,作者:shadow,如若转载,请注明出处:http://www.178linux.com/64536

(0)
shadowshadow
上一篇 2016-12-23
下一篇 2016-12-23

相关推荐

  • vim编译器与shell脚本简介

    一、vim文本编译器       vi:Visual Interface,文本编辑器;   文本: ASCII Unicode  文本编辑种类:行编辑器:sed  ;全屏编辑器:nano,vi ,vim ;其他编辑器:gedit(图形),g…

    Linux干货 2016-11-24
  • FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

    前言 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用,目前在开源操作系统中常用的FTP套件主要有proftpd、pureftp、ServU和wu-ftpd等。本文将讲解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB实现虚拟用户访问控制。 基础配置介绍 工作原理 状态响应码 1xx:信息码 2xx…

    2015-04-20
  • CentOS7 实现网卡绑定

    Bonding ;理念 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用 或者负载均衡。直接给两块网卡设置同一IP地址是不可以的 。通过bonding,虚拟一块网卡对外提供连接,物理网卡的 被修改为相同的MAC地址 banding工作模式 Mode 0 (balance-rr) 轮转(Round-robin)策略: 从头到尾顺序的在每一个slave 接…

    2017-12-19
  • bash之脚本入门及课后作业

    概述: shell是一个工具程序,在用户登录后后系统启动,它解释并运行由命令或脚本文件输入的命令,从而实现用户与内核之间的交互。bash是Linux操作系统上默认的shell,在交互和编程两方面,bash提供了许多Bourne shell没有的功能,并且还结合了C shell和Kron shell最有用的功能。 bash的语法和结构   …

    Linux干货 2016-08-15
  • bash脚本之练习

    1、编写服务脚本/root/bin/testsrv.sh,完成如下要求  (1) 脚本可接受参数:start, stop, restart, status  (2) 如果参数非此四者之一,提示使用格式后报错退出 (3) 如是start:则创建/var/lock/subsys/SCRIPTNAME, 并显示“启动成功” 考虑:如果事先已经启…

    Linux干货 2016-08-24
  • 控制字体颜色的输出echo[转载]

    http://onlyzq.blog.51cto.com/1228/546459 echo显示带颜色,需要使用参数-e格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如: echo -e "\033[41;37m TonyZhang \033[0m"其中41的位置…

    Linux干货 2017-02-01