處理文本的工具sed,vim 編輯器的使用   Linux版

處理文本的工具sed

Stream EDitor 行編輯器

sed一次處理一行的內容,處理時,將當前處理的行存儲在臨時緩衝區,稱爲“模式空間”,接着用sed命令處理緩衝區中的內容,處理完成後,將緩衝區的內容送往屏幕,接着處理下一行不斷重複,直到末尾。

     

一次處理一行

文件--->內存空間--->屏幕

 模式空間 


文件--->內存空間--->屏幕

            |               

 保持空間  


sed  

     -n:不輸出模式空間內容的自動打印

     -e:多點編輯

     -f:/PATH/TO/SCRIPT_FILE:從指定文件中讀取編輯文本

     -r:支持使用擴展正則表達式

     -i:原處編輯

     -i.bak   直接使用容易刪去文件,使用的時候在後面加.bak 留下一個備份

     sed -i.bak '10d' f1


script:地址命令

地址定界:

      (1)不給地址:對全文進行處理

      (2)單地址:

                #:指定的行

                /pattern/:被此處模式所能夠匹配到的每一行

      (3)地址範圍:         

                 #,#

                 #,+#

                 /pat1/,/pat2/  sed -n '/^root/,/^s/p'

                 #,/pat1/

      (4)~:步進

               1~2 奇數行

               2~2 偶數行




sed -n '2p' f1

將第二行顯示出來

QQ圖片20160810102321.png

編輯命令:

          d:刪除模式空間匹配的行

          p:顯示模式空間中的內容

          a \text:在行後面追加文本:支持使用\n實現多行追加

          i \text:在行前面插入文本:支持使用\n實行多行插入

          c \text:替換行爲單行或多行文本

          w /path/to/somefile:保存模式匹配的行至指定文件

          r /path/from/somefile:讀出指定文件的文本至模式空間中匹配到的行後

          =:爲模式空間中的行打印行號

          !:模式空間中匹配行取反處理


s///: 查找替換,支持使用其它分隔符,s@@@,s###

替換標記:

         g:行內全局替換

         p:顯示替換成功的行

         w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

nl =cat -n 顯示行號   

sed 's@^[^#]@#&@' /etc/fstab 

QQ圖片20160809212745.png

echo /etc/sysconfig/ |sed -r 's#(/.*/)[^/]+?#\1#' 

                     sed 's#^.*\<##'

                     sed -r 's#[^/]+/?##'

QQ圖片20160809213500.png    

QQ圖片20160809213722.png    

QQ圖片20160809213956.png             

sed工具

高級編輯命令:

             h:把模式空間中的內容覆蓋至保持空間中

             H:把模式空間中的內容追加至保持空間中

             g:從保持空間取出數據覆蓋至模式空間

             G:從保持空間取出內容追加至模式空間

             x:把模式空間中的內容與保持空間中的內容進行互換

             n:讀取匹配到的行的下一行覆蓋至模式空間

             N:追加匹配到的行的下一行至模式空間

             d:刪除模式空間中的行

             D:刪除當前模式空間開端至\n的內容(不在傳至輸出),放棄之後的命令,但是對剩餘模式空間重新執行sed





vim 編輯器



只在/etc/目錄下的文件,用vim才顯示格式高亮顏色。

QQ圖片20160810102600.png


+#:+數字:直接打開跳到數字行

    +/PATTERN:  打開文件之後直接跳到關鍵詞

    +空格:打開直接跳最後一行

    

-d:同時打開多個文件,並能對比出文件之間的不同

-m:打開爲只讀方式,不能修改

-e:直接進入ex模式



vim三種主要模式

       命令模式(默認):主要功能是查看文件內容

       插入(編輯)模式:修改文本。

       擴展命令模式:保存,退出等。

   hjkl 上下左右移動


插入(編輯)模式

       i:在原本光標的地方修改

       I:自動去到光標所在的行開頭

       a:跳到光標所在的位置的後一位置

       A:直接跳到光標所在的行尾

       o:在當前光標所在的行下方打開一個新行

       O:在當前光標所在的行的上分打開一個新行



模式轉換

插入模式 ---->命令模式

          ESC

命令模式 ---->擴展模式

           :

擴展模式 ---->命令模式

          ESC

鎖定和解鎖:Ctrl+s,屏幕不顯示,但是實際能夠輸入,解鎖可以顯示

            Ctrl+q



關閉文件

擴展模式:

        :q 退出

        :q! 強制退出,丟棄做出的修改

        :wq 保存退出

        :x 保存退出

        按“:”進入Ex模式




命令模式

        ZZ:保存退出

        ZQ:不保存退出



字符間跳轉:

h: 左  l:右  j:下  k:上


單詞間跳轉:

          w:下一個單詞的詞首

          e:當前或下一單詞的詞尾

          b:當前或前一個單詞的詞首

          #COMMMAND:跳轉由#指定的個數的字符

當前也跳轉:

          H:頁首

          M:頁中間行

          L:頁底


行首行尾跳轉:

          ^:跳轉至行首的第一個非空白字符:

          0:跳轉至行首

          $:跳轉至行尾


行間動:

          #G,擴展模式:#:跳轉至由#指定行

          G:最後一行

          1G,gg:第一行


句間移動:

        ):下一句 

        (:上一句


段落間移動:

        }:下一段

        {:上一段




命令模式翻屏操作

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

Ctrl+b:向文件首部翻一屏

Ctrl+d:向文件尾部翻半屏

Ctrl+u:向文件首部翻半屏



字符編輯:

         x:刪除光標處的字符

         #x:刪除光標處其實的#個字符

         xp:交換光標所在處的字符及後面字符的位置

         ~:轉換大小寫

替換命令:

         r:替換光標所在處的字符

         R:切換成REPLACE模式



刪除命令:d

        d:刪除命令,可以結合光標跳轉字符,實現範圍刪除

        d$:刪除到行尾

        d^:刪除到非空行首

        d0:刪除到行首

        dd:刪除到光標所在的行

        #dd:多行刪除

        D:從當前光標位置一直刪除到行尾,留空行,等同於d$



拷貝命令:y

          y:複製,行爲相似於d命令

          y$:複製到行尾

          y0:複製到行首

          y^:複製到非空行首

          yy:複製行

             #yy:複製多行

          y:複製整行   


粘貼命令: p

         p:粘貼當前光標所在後面

         P:粘貼在當前光標所在的前面


改變命令:c         


命令模式

100 i wang [ESC] 粘貼“wang”100次

y 複製,d刪除,gU,變大寫,gu變小寫




地址定界:#:具體第#行,例如2表示第二行

          #,#:從左側#表示行起始,到右側#表示行結尾

          #,+#:從左側#表示行起始,加上右邊→_→#表示的行數

                 2,+3  表示2到5行

          .:表示當前行

          $:最後一行

                    .,$-1 當前行到倒數第二行

          %:全文,想當於1,$          

         

地址定界 擴展模式:

                 /at1/,/pat2/

                 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束

                #,/pat/

                /pat/,$



撤銷更改:u 

#u撤銷之前多次更改    

重做按:Ctrl+r

重複前一個操作:.

n. 複製n次前一次的操作。

U撤銷光標所在行的所有更改



vim的寄存器

"a yy

"a p

"b yy


有26個命名寄存器和1個無名寄存器,常存放在不同的剪貼板內容,可以不同回話間共享。

用a,b,...,z表示,用"寄存器表示,放在數字和命令之間

       如:3"tyy表示複製3行到t寄存器中

       "tp 表示將t寄存器內容粘貼

未指定,將使用無名寄存器

有10個數字寄存器,用0,1,...9表示,0存放最近複製內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2存轉到3,以此類推。數字寄存器不用在不同回話間共享。


編輯二進制文件

以二進制方式打開文件

           vim -b binaryfiy

    擴展命令模式下,利用xxd命令轉換爲可讀的十六進制

           :%!xxd

    擴展命令模式下,利用xxd命令轉換回二進制

           :%!xxd       

QQ圖片20160810101343.png


可視化模式

    v面向字符

    V面向行

    ctrl -v 面向塊


可視化鍵可用於與移動鍵結合使用:

    w,),},箭頭等

突出顯示的文字可以被刪除,複製,變更,過濾,搜索,替換等。



多文件模式

vim f1,f2,f3...

    :next 下一個 

    :prev 前一個

    :first 第一個

    :last 最後一個

    :wall 保存所有

    :qall 退出所有

    :wqall 保存退出所有


多文件分隔

    vim -o | -O f1 f2

    -o:水平分隔

    -O:垂直分隔

  在窗口間切換:Ctrl+w

                可以通過Ctrl+w 可以切換都其他分割窗口

      單文件窗口分隔:

                     水平分割:Ctrl+w,s

                     垂直分割:Ctrl+w,v

                     取消相鄰的窗口:Ctrl+w,q 

                     取消全部窗口:Ctrl+w,o

                     退出:wqall

QQ圖片20160809215023.png

QQ圖片20160809214453.png


vim 配置文件:

            全局:/etc/vimrc

            個人:~/.vimrc

    擴展模式:當前vim進程有效

             (1)行號

                  顯示:set number,簡寫爲:set nu

                  取消顯示:set nonumber,簡寫:set nonu

              (2)括號成對匹配

                  匹配:set showmatch,簡寫爲set sm

                  取消:set nosm

              (3)自動縮進

                  啓用:set ai

                  禁用:set noai

              (4)高亮搜索

                  啓用:set hlsearch

                  禁用:set nohlsearch

             (5)語法高亮

                  啓用:syntax on

                  禁用:syntax off

              (6)忽略字符的大小寫

                  啓用:set ic

                  不忽略:set noic

              (7)文件格式

                  啓用:fileformat=unix (Linux)

                  不忽略:fileformat=dos (windows)

              (8)設置文本寬度

                   :set textwidth=65(vim only)寬度

                   :set wrapmargin=15


              vim/vi 內置幫助

                     :help

                     :help topic



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章