关于grep的应用,刚开始接触觉得很简单,抓取一些简单的关键字等等,但是联系到正则表达式,就要难了,看着那一堆符号,猛一看,着实困难,但面对困难,我们要沉下心来,一点一点的分析,你会发现,其实也没想象的那么难。

       grep作为一种文本查找工具,十分的好用,有egrep,fgrep,grep使用技巧对我们今后学习是一种十分有用的技能。

       grep的那一堆应用字符我简单的说一下吧:

      grep -E=egrep

        -v 取反

        -o 只显示匹配到的串本身

        -i 忽略大小写

        -r 递归搜索文件

        -A # after 取后两行

        -B # before 去前两行

        -C # 去前后各两行

     下面就是一些正则表达式用到的符号了:

       ^ PATTERN    行首锚定符 

       PATTERN $    行尾锚定符

       \< PATTERN   词首锚定符

       PATTERN \>   词尾锚定符

       .            匹配任意单个字符

      *            匹配此前的字符0到任意次

      .*           匹配任意长度的任意字符,  贪婪模式;尽可能长的匹配符合       模式的字符串

       ?            匹配此前的字符0次或1次 

       x\{m,n\}      匹配此前的字符至少m次,至多n次  x表示字符

       \(\)

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

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

       [:space:]

       这些符号看似简单,其实用起来需要很细心,下面举几个例子:

      练习:查找如下字符串中形如xxx.xxx.xxx.xxx的字符串,其中x必须是数字

           abc.111.222.333

           12a.333.444.567

           11.222.333.444

           111.2.333.333

           444.444.222.111

     如果用grep来实现,命令就略显复杂了:

     grep "[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}" digit.txt 

     一大堆的符号一不小心就会搞错,如果用egrep来实现就简单多了:
     grep -E "([[:digit:]]{3\}\.){3}[[:digit:]]{3}" digit.txt
     当然grep -E=egrep 都表示扩展正则表达式,它不支持\符号。
 
      下面是两个简单的小例子:
      练习:茶找当前系统上名字为user1的用户的账号的相关信息
 
         grep "^user1:" /etc/passwd
         grep "^user1\>" /etc/passwd
 
       练习:查找当前系统上以其为附加组的用户超过两个的组的相关信息
 
         grep "[^:]*:[^:]*:[^:]*:[[:alnum:]]\{1,\},.*" /etc/group
         grep -E"([^:]*:{3})([[:alnum:]]*,){1,}" /etc/group
 
 
       grep后面一般跟着--color=auto 表示抓取的关键字的颜色,这里表示红色。
当然我们也可以修改。我们可以使用环境变量export来改变,如: export GREP_COLOR='' 改变grep到的颜色。
     
       以上是grep及正则表达式的使用。
  
       下面说一下vim。vim可以说是当今最流行,功能也最强大的一个文本编辑器了。
       vim 模式化的编辑器有三种模式:编辑模式,输入模式,末行模式
       编辑模式-->输入模式:
         i: insert  在光标前 插入
         I:当前光标所在行的行首
         a:append  在光标后插入
         A:...行尾
         o:光标所在行的下方打开一个新行
         O:...上方
       输入模式-->编辑模式:
        ESC
       编辑-->末行
        : 

      末行-->编辑

         ESC ESC

 

     1、保存退出

         :wq

         :wqall

         ZZ 

      2、不保存退出:

         :q

         :q!

         :qall!

       下面是一些vim编辑器的操作技巧:

   光标移动:

       h 左移

       l 右移

       j 下移

       k 上移

    w :跳到下一个单词的词首                                                                                                                                 e <--> b

        () 跳句子

        {} 跳段落

    0:绝对行首    <---> $:绝对行尾

        ^: 行首的第一个非空白字符

     行间跳转:

         G   文件最后一行

        #G  numberG 跳到指定行

        :#

      如何翻屏:

         Ctrl+f 一次向文件尾部翻一屏

         Ctrl+b ...       首部

         Ctrl+d ...       尾部翻半屏

         Ctrl+u ...       首部翻半屏

       c:修改

       cw,c$

       C = c$

       cc

       ncc 删除n行

     删除字符:

         x

         nx

         X 

 

      删除单词:

        d

       nd

      替换:

         r  大小写替换

         R 进入到替换模式

         5rA

      撤销:

         u:undo 撤销最近一次的操作

         nu:.....最近n次.....

      Ctrl+r:撤销刚才的撤销

     重做:

         . :redo,重复执行上一条命令

      复制:

         y: yank

         y$ 当前光标到行尾

         yy 当前光标所在行

         nyy

 

           p 粘贴 当前光标所在行的下方(后面,如果复制的不是一整行)粘贴

           P               ...    上方(前面)

      移动:

           d

           p

      可视化模式:

            v:按字符

            V:按行

      查找:

            /keyword

            ?keyword

            n/N

      替换:substitude

            :ADDR1:ADDR2S/from/to/flags

            flags:

            i: ignore-case

            g: global

            m,n

            1,$

            .,$

            .,+num

            1,$-1

            % 全文

            s///

            s#/etc##

              :next

              :last

              :first

              :prev

      分割窗口:

               Ctrl+w,s 水平分割

               Ctrl+w,v 垂直分割

               Ctrl+w,方向箭头,切换界面

               Ctrl+w,t 最上方

               Ctrl+w,b 最下方

               l 左

                r 右

      分割显示多个文件:

              -o : 水平分割

              -O : 垂直分割

   

       设定vim的工作属性:

              显示行号:

                :set nu

                :set nonu

       自动缩进:

             :set autoindent

             :set noai

       语法高亮:

             syntax on|off

 

        搜索高亮:

             :set hlserrch 

             :PATTERN

      好多快捷键,一下肯定记不住,不过要多操作,多动手,慢慢记,肯定能玩转vim的。