處理文本的工具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

1、如何設置tab縮進為4個字符?

   :settabstop=4 softtabstop=4 shiftwidth=4 noexpandtab 

2、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;

sed 's@//etc//sysconfig//init@//var//log@'g /tmp/functions 

3.刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;

sed 's@^[#]@#\n@' /tmp/functions 

原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/32514

(0)
swzczxswzczx
上一篇 2016-08-11 09:38
下一篇 2016-08-11 09:39

相關推薦

  • 文本處理三劍客之sed

    文本處理三劍客之sed sed概述 sed使用示例 sed的高級應用 sed概述 sed, 作為文本三劍客之一,其定位就是一個編輯器, 而且sed是一個流式編輯器(stream editor),其主要功能是過濾和轉換文本。 sed – stream editor for filtering and&…

    Linux干貨 2016-08-12
  • 磁盤管理和高級文件系統管理-習題

    高級文件系統管理-習題 1、 創建一個可用空間為40G 的RAID1 設備,要求其chunk大小為128k ,文件系統為ext4 ,有一個空閑盤,開機可自動掛載至/backup目錄 [root@centos7 ~]# mdadm -C /dev/md0 -c 128 -a yes -l 1 -n 2 -x 1 /dev/sdb /dev/sdc /dev/s…

    Linux干貨 2016-09-01
  • LVM(邏輯卷管理)

    LVM 邏輯卷管理 概述:      LVM是將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。與傳統的磁盤與分區相比,LVM為計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的為…

    Linux干貨 2016-09-05
  • Linux計劃任務

    Linux任務計劃 Linux任務計劃、周期性執行任務 未來某一時間點執行一次任務:at,batch 周期性計劃任務:crontab     默認執行結果會通過郵件形式發送給用戶 本地電子郵件服務 smtp:Simple Mail Transfer Protocol,既簡單郵件傳輸協議,主…

    Linux干貨 2016-09-14
  • N25-第五周作業

    第五周作業 1、顯示當前系統上root、fedora或user1用戶的默認shell; grep "^\(root|fedora|user1\)" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); grep "…

    Linux干貨 2017-02-14
  • 磁盤分區

    磁盤分區 一、分區方式兩種 MBR分區不能超過2個T按柱面分區主引導記錄存放在,0磁道0扇區 512bytes前446字節存放bootloader (軟件程序)64字節:分區表16個字節表示一個有效的分區 故只能分4個主分區。大于4個需要創建擴展分區,并在其中創建邏輯分區。2字節 55AABPT分區GPT:GUID(Globals Unique Identi…

    Linux干貨 2016-08-29
欧美性久久久久