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

相关推荐

  • 第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示? cat(concatenate)#从头开始看     文本文件查看工具 SYNOPSIS:     cat [OPTION]… [FILE]… -A 输出行最后加上$号 -n 输出行号 例…

    Linux干货 2016-12-12
  • N25-第三周作业

    1.列出当前系统所有已经登录的用户的用户名,注意同一个用户登录多次,只显示一次即可   who | cut -d" " -f1 |uniq 2.取出最后登录到当前系统的用户的相关信息    w | tail -1 3.取出当前系统上被用户当做其默认shell最多的那个shell &nbsp…

    Linux干货 2016-12-19
  • 学习宣言

    纸上得来终觉浅,绝知此事要躬行博学之,审问之,慎思之

    Linux干货 2016-10-24
  • 第一次发微博

    第一次申请微博,第一次发微博,觉得很难

    Linux干货 2017-01-06
  • 磁盘配额、阵列与逻辑卷

    一、磁盘配额 在内核中执行以文件系统为单位启用对不同组或者用户的策略不同 根据块或者节点进行限制执行软限制(soft limit)硬限制(hard limit) 步骤一:获得文件系统支持临时有效:mount -o remount,usrquota,grpquota {mount_point|device}永久有效:写入配置文件 /etc/fstab 中检查文…

    Linux干货 2016-08-29