grep,sed命令

     文本编辑种类:
     行编辑器:sed
     全屏编辑器 :nano,vi
     
     vim :vi Mproved
     模式化的编辑器:
          编辑模式,也叫命令模式
          输入模式,插入模式
          末行模式:
                      内置行的命令行接口;
                     
    文件打开:如果打开文件时没有,vim会自动创建文件。
    vim 文件名     vim [options] [file ..]
    打开文件后,最下一行信息为:
    文件名字         总行数 总字符数        光标所在行 ,第几个字符     内容百分比
    "functions"    787L, 18586C                           47,7                           2%

    两个大写:ZZ 保存并关闭
    vim  +#   文件:打开文件后,直接让关闭处于低#行的行首    
    vim  +/pattern 文件  :打开文件后,直接让光标处于第一个pattern匹配到的行的行首。
    vim  + 文件  :直接将光标定位到行尾第一个字符
   
   
   
    模式转换:
          编辑模式:默认模式
              编辑模式–>输入模式
              i   :在光标所在处输入
              I    :  在光标所在行首输入
              a   : 在光标所在处后方输入
              A :在光标所在行末尾输入
              o  :光标所在处下方打开一个新行
              O :光标所在处上方打开一个新行
   
              输入模式–>编辑模式
              按ESC键
             
              编辑模式–>末行模式
              输入:
     
               
              末行模式–>编辑模式
              按2次ESC键
   
               关闭文件
                在编辑模式下输入:  ZZ  表示保存并退出:
                :q  退出    
                :q!  强制退出,不保存此前的编辑操作
                :wq  保存并退出
                😡     保存并退出
                :w   /位置/文件名    将文件保存在某位置,并命名
               
                光标跳转:
                字符间跳转
                h  光标向左跳转一个字符
                l   光标向右跳转一个字符
                j   光标向下跳转1行
                k  光标向上跳转1行
                #h  光标向前跳#个字符
                #l   光标向后跳#个字符
                #j  光标向下跳#个行
                #k  光标向上跳#个行
               
                单词间跳转
                w : 下一单词的词首
                b:当前或前一个单词的词首
                e:当前或后一个单词的词尾
                #w  向后跳#个单词,词首
                #b  向前跳#个单词,词首
                #e  向后跳#个单词,次尾
               
                行首跳转
                ^  :  跳转至行首的第一个非空白字符
                0   :跳转至行首,绝对第1一个字符位置
                $   :跳转至行尾
               
               
                行间跳转
                G     跳到行尾,第一个字符
                #G   跳转到#数行首         1G  跳转到文件第一个行第一个字符
               
               
               
                句间跳转
                )   跳转至下一句
               
                (      跳转至上一句
               
               
                段间跳转
                }      跳转至下一段
                {      跳转至上一段
               
               
               
                翻屏操作
                ctrl + f   向文件尾部翻一屏
                ctrl  +b  向文件首部翻一屏
                ctrl  +d  向文件尾部翻半屏
                ctrl  +u 向文件首部翻半屏
                回车键   向文件尾部翻一行
               
                vim编辑命令
                字符编辑
                x  删除光标所在处字符
                #x  删除光标所在处起始后#个字符
                xp  将光标所在位置处字符前后互换
               
                替换命令replace
                 r 字符(任何字符)     :替换光标所在处的字符
                                     
                删除命令
                d   删除命令,可结合光标跳转字符,实现范围删除
                     d$    删除光标所在处至行尾的内容
                     d^   删除光标所在处至行首的内容
                #dw  向后删除#个单词,词首
                #db  向前删除#个单词,词首
                #de  向后删除#个单词,次尾
                      dd  删除光标所在行     删除一次后,向继续删下面内容,可以用.号继续删
                      #dd 删除光标所处的行起始的共n行     删除内容保存在缓冲区,可以粘贴
                :1,10  d 加回车键       删除1,10行
               
                粘贴命令
                    p  :缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方,否则,粘贴至当前光标所在处后方:
                    P 大  :缓冲区的内容如果为整行,则粘贴在当前光标所在行的上方,否则,粘贴至当前光标所在处前方
                                   
                 复制命令yank    
                    y:  复制,工作行为相似于d命令
                    y$    复制光标至行尾内容
                    y^    复制光标至行首内容
                    y0     复制光标至行首内容
                   
                    ye
                    yw
                    yb
                   
                    yy  复制以整行
                        #yy   复制#号行       ,内容在缓存区,可以通过p进行粘贴    
                       
               
            改变命令(change   c)        
                 编辑模式—>输入模式,实现删除操作
                 c$   删除光标至行尾
                 c^  删除光标至行首
                 c0  删除光标至行首
                 
                 cb  删除光标后一个单词,并开启词首插入模式
                 cw  删除光标前一个单词,并开启词首插入模式
                 ce   删除光标后一个单词,并开启词尾插入模式
                  #command
                 
                 cc 删除光标行,并开启行首插入模式
             
           可视化模式:
             v    按字符选定
             V    按行选定
             结合编辑命令:d,c,y
             
             
             
             撤销操作 undo
              u        撤销此前操作
              #u      撤销#次操作
 
              撤销此前的撤销
              ctrl r    重复执行前一个编辑操作
             
              vim自带的练习教程:
              [root@localhost testdir]# vimtutor

             
            vim末行模式:内键的命令行接口

 
 
   vim末行模式:
内键的命令接口:
 (1)地址定界
       startpost,endpost  起始位置,末尾位置
           .    表示当前行
           m: 特定的第m行
           $  :  最后一行             .,$-1  从当前行到倒数第二行
           %    全文
           m,n  指定m-n行
           m,+n   起始行m处,在加n行,右侧为相对左侧行号的偏移量:
           例如:3,7   :从3第三行处开始数7行,也就是3-8行
           
           /pattern/   从光标所在处起始向维基尾部第一模式所匹配到的行        
                  /first/,$ d   从光标所在处起始向维基尾部第一模式所匹配到的行    
                 
           /pattern1/,/pattern2/    从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束间的行
           
           可以编辑命令一同使用,实现编辑操作
            d
            y
            c
            w /path/to/somewhere  :将范围内的文本保存至指定位置。
            #r  /path/to/somewhere 将指定的文件中的文本读取并插入至指定位置
           
        查找:
        /pattern 从当前光标所在处向文件尾部查找能被匹配到的所有字符
        ?pattern 从光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
        n :下一个,与命令方向相同
        N :  上一个,与命令方向相反
       
       
        (3)查找并替换
         s:末行模式命令:
         s/要查找的内容/替换为的内容/修饰符
              要查找的内容:可以使用正则表达式
              替换为的内容:不能使用正则表达式,但是可以引用:\1
                               如果'要查找的内容",部分在模式中使用分组符号,在‘替换为的内容’中使用后向引用
                               直接引用查找匹配到的文本
            修饰符:
            I:忽略大小写      1,40   s/this/THIS/Ig  
            g:全局替换,意味着一行中如果匹配到多次,则都替换:
            \ :转义字符
            将文件中/cgroup/systemd/替换成/etc/sysconfig/
            %s/\/cgroup\/systemd/\/etc\/sysconig/g
            可将分隔符替换成其他非常用字符
            s@@@         %s@\<t\([[:alpha:]]\+\)\>@T\1@g     将文本中所有t开头的词,全部替换为T开头的词
            s###              %s#\<t[[:alpha:]]\+\>#&er#g      将文本中所有t开头的词,词后都加上er,重点:&替换单词

           
            练习:    
            1.复制/etc/grb2.cg文件至/tmp目录中,用查找替换命令删除/tmp/grub1.cfg文件中以空白字符开头的行的行首空白字符
               %s@^[[:space:]]\+@@   答案不符合:
             2.复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符
    开头的行首加上#号
                %s@^$@#    或者 %s/^$/#        %s@^[[:space:]]\+@#

             3.为/tmp/grub2.cfg文件的前三行加#号
                   1,3 s/^/#
             4.将/etc/yumrepos.d/CentOs-Base.repo文件中所有的enabled=0替换为enabled=1
                   % s/enabled=0/enabled=1/g
       
     
     
       
        vim的多文件模式:
        vim  file1 file2 file3
        :next    进行至下一个文件
        :prev  上一个文件
        :first     切换至第一个
        :last      切换至最后一个文件
        并且可以跨文件复制
       
        退出所有文件:wq保存所有文件,并退出
        退出单个文件用q
       
        多窗口:         vim
        -o:水平分割窗口
        -O :  垂直分割窗口
        ctrl+w  后,用上下做右,回落至hjkl键可以进行,窗口切换  
        ctrl +w +s,可对文件进行水平二次分割
        ctrl +w +v,可对文件进行垂直二次分割
        q键退出一个窗口
        qall退出所有
        wqall保存,并退出所有文件
        注意单个文件也可以分割为多个窗口进行查看
       
        定制vim的工作特性
        永远有效:
             全局:/etc/vimrc
             用户个人:~/.vimrc          不一定存在,需要用户自己创建  
             个人vimrc设置:
              vim  .vimrc , 在.vimrc里写入set nu,即完成设置行号设置。
         
         1.行号
             显示行号:set number ,简写为set nu
             不显示行号:set nonumber,简写文 set nonu
         注意:在末行模式设置只对当前有效
         
         2.括号匹配高亮显示
            匹配 :set showmatch ,set sm        设置高亮
            取消 :set noshowmatch,set nsm  取消高亮
         
         3.自动缩进功能
            set ai        设置缩进
            set noai   取消设置缩进
           
          4.搜索高亮
            set  hlsearch      :设置高亮搜索
            set nohlsearch  :设置取消高亮搜索
         
          5.语法高亮
            syntax on 开启语法
            syntax off 关闭
           
          6.忽略字符大小写
            set lc  启用忽略
            set nolc 取消大小写
           
           
         vim内容内
          :help set  能查看用户帮助  
              help  subject           :q!   退出

 
 
   sed命令
file://C:\Users\tom\AppData\Local\Temp\ct_tmp/1.png
sed  options  file
-n 不输出模式空间的内容至终端
-e 可以指定多个命令的编辑
-r  支持使用扩展正则表达式
-i  直接编辑元文件 ,有危险可以用 -i.bak(sed -i.bak "/^#//"  /etc/fstab )命令先保存一份文件在编辑。

地址定界:
(1)空地址:不给地址,对全文进行处理
(2)单地址:
    #:指定第#行
    /pattern/:被没收所匹配到的每一行
(3)地址范围:
 m,n : m行至n行
 m,m+5   :m行至m+5行
 m,/part1/  :从m行到模式匹配到的第一行
 /part1/,/part2/  重模式匹配到的第一行至模式匹配到的第二行
 
 (4)步进:
    1~2:基数行
    2~2:偶数行
   
   
sed选项
-d :删除模式空间中的内容  : sed "/^$/d" /etc/fstab
-p :打印匹配到的行               sed "3p" /etc/fstab
-a  \文本:在匹配行后下一行,追加文本,支持使用\n实现多行追加  "3a \xiong\nxiong\n" fstab
-i   \文本:在匹配的前一行,行首追加文本,支持使用\n实现多行追加.
-c  \文本:  将匹配的行替换成其他信息。sed "2c \xiong" fstab拍
-w 位置+文件 :将匹配的内容保存至某个文本:    sed "/^U/w  /root/sedResult" fstab
-r   文件 :  将文本内容读入匹配行后      sed '3r /etc/issue' fstab
=:匹配的行前加行号:   sed "/^UUID/=" /etc/fstab
!  :匹配的到模式取反,放在命令之前        sed '/^#/!d' fstab

rev命令 将内容反向显示    echo "/etc/rc.d/init.d/functions" | rev

s///查找替换,其分隔符可以咨询指定,常用的有s@@@,s###等   ,一定要写全///这个符号

   替换标记:
             g:全局替换
             w /path/to/somefile:将替换成功的结果保存至指定文件中
             p:显示替换成功的行
             & :代表替换原文内容    sed -i “s/root/&man/g” /etc/passwd    

高级编辑命令:
        h:将模式空间中内容覆盖至保存空间中内容  
        H:将模式空间中的内容追加至保存空间内容
        g:将保存空间中内容覆盖至模式空间中内容
        G:将保存中间中内容追加至模式空间中内容
        x:将模式空间中内容与保存空间中内容互换
        n:读取匹配的下一行覆盖至模式空间中
        N:读取匹配的下一行追加至模式空间中
        d:删除模式空间中的行
        D:删除多行模式空间的所有行
        ;  命令行间用;隔开

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

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-12 09:36

    文章都是一些理论的东西建议加上自己的实际操作,理论加上实践,让自己的文章更加丰满起来哦。