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 01:00
下一篇 2016-12-23 01:17

相关推荐

  • linux发行版说明和哲学思想,以及常用命令说明

    Linux发行版主要流行的版本有3种:debian,slackware,red 其说明和特点如下图。 Linux哲学思想: 1、一切皆文件;所有的一切都变成了文件!不光是软件方面的比如传统文件、目录、字符设备、还包括硬件或者接口。如鼠标/mouse、打印机/lp、还有接口比如/usb. 2、单一目的的小程序;一个程序只负责干一件事,而且要把这个任务做好。 3…

    Linux干货 2016-10-30
  • Linux终端类型

      终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。   在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:   1、串行端口终端 /dev/ttySn     串行端口终端是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个…

    Linux干货 2016-10-14
  • 堡垒机-麒麟开源堡垒机 V 1.3 正式发布

    麒麟开源堡垒机团队经过1个月的努力,发布V 1.3版本,本版本主要收集了5月开发的小功能,并且增加了大用户量、大设备量,纵深目录层级的优化支持,产品 V1.3  光盘主要新增功能如下(相对 V1.2光盘) 1.增加苹果MAC OS系统客户端的WEB访问支持 2.增加CA认证支持,内置CA证书  3.增加ssh 公私钥认证方式中,私钥中有密…

    Linux干货 2016-06-09
  • linux基础学习(数组、字符串变量处理)

    2016-08-22 授课内容: 数组 高级字符串操作 一、数组   变量:存储单个元素的内存空间   数组:存储多个元素的连续的内存空间,相当于多个变量的集合。   数组名和索引   索引:编号从0开始,属于数值索引   bash的数组支持稀疏格式(索引不连续)   …

    Linux干货 2016-08-24
  • 8.1_Linux管道的使用和用户管理

    什么是管道? 管道就是把命令1的标准输出发送给命令2的标准输入,把命令2发的标准输出发送给命令3的标准输入。。。 最后一个命令会在当前shell进程的子shell进程中执行用来 管道实现了使用目的单一的小程序,组合小程序完成复杂的任务 管道需要配合其他命令的使用 tr命令的使用,常常用于配合管道     -c或–co…

    Linux干货 2016-08-10
  • n28 第二周作业

    n28 第二周作业

    Linux干货 2017-12-09