文本三劍客之sed

 

文本處理三劍客:
    grep,egrep,fgrep:文本過濾器
    sed:stream  editor,流編輯器,是一行一行處理的
    awk :文本格式化工具,報告生成器

 

  sed工作方式:它是讀一行的文本內容復制到模式空間進行處理(不是在文本內處理的),符合sed模式的進行編輯,不符合的會標準輸出來。
      sed 是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中的內容,處理完成后,把緩沖區內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed 主要用來自動編輯一個或多個文件, 簡化對文件的反復操作, 編寫轉換程序等.
    sed也可以一次性執行多行文本內容。
     sed [OPTION]… ‘script’ [input-file]…    
     sed   選項(option)  地址命令
        

sed的選項
常用選項:
  -n :不輸出模式空間中的內容至屏幕;
sed -n.PNG 

-e script,–expression=script : 多點編輯;
 

sed -e.PNG

  -f / PATH/TO/SCRIPT_FILE :  從指定文件中讀取編輯腳本
  -r,–regexp-extended : 支持使用擴展正則表達式;

練習五.PNG 

 

-i[SUFFIX], –in-place[=SUFFIX] :直接編輯原文件;(這個命令很危險,使用時需注意,可以先備份要編輯的文件,再使用 -i )
    備份(sed -i.備份文件的后綴名 “地址命令” 文件名)
sed i 編輯備份.PNG

 

 

script:  ' 地址命令'
地址定界:
    1. 空地址:對全文進行處理;
    2,單地址:
             #:指定行;
            /pattern/:被此模式所匹配到的每一行;
    3,地址范圍:
            #,#;第幾行到第幾行
            #,+#:第幾行到從這行開始的以下幾行
            #,/pattern/:第幾行到能被模式所匹配的哪一行之間所有行,
            /pattern1/,/pattern2/ :
          / /為固定模式
     4,步進:~
           1-2:所有的奇數行
           2-2:所有的偶數行
 編輯命令
         d:刪除;

sed -d.PNG       

 

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

sed -p.PNG 

 

        a \text:在行后面追加文本“text”,支持使用\n實現多行追加

sed 行后加.PNG

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

sed 行前加.PNG

         sed –n‘s/root/&superman/p’ /etc/passwd  在單詞后增加

 & 在單詞后增加.PNG   

         sed –n‘s/root/superman&/p’ /etc/passwd  在單詞前增加

在單詞前增加.PNG

         c \text:把匹配到的行替為此除換指定的文本“text”

sed c.PNG

         w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;

sed w保存到某個文件.PNG

         r /PATH/FORM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并;

sed r 讀某個文件到這個文件.PNG

 

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

sed =.PNG

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

sed !.PNG

          s///(search 搜索) :查找替換, 支持使用其它分隔符,s@@@ ,s###(用搜索到的字符串用后面的字符串代替它)
  替換標記:
          g:  行內全局替換(使用s///查找替換時 ,加上g :  s///g  時會把整行符合的字符串都替換,而不是只替換這一行搜索到的第一個符合的字符串)

sed 全局替換.PNG

          p:  顯示替換成功的行

sed 轉換打印.PNG

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

sed 替換成功保存.PNG

sed 高級編輯命令:
    h:  把模式空間中的內容覆蓋至保持空間中(1!G:如果不是第一行就執行把從保持空間

取出內容追加至模式空間,   $!d : 如果不是最后一行就執行刪除模式空間中的行)

sed 高級 h.PNG

    H :把模式空間中的內容追加至保持空間中
    g:  從保持空間取出數據覆蓋至模式空間

sed 高級 g.PNG

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

sed 高級 G 追加.PNG

    x:  把模式空間中的內容與保持空間中的內容進行互換
    n:  讀取匹配到的行的下一行覆蓋至模式空間

sed 高級 n.PNG

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

sed 高級 N 追加.PNG

    d:  刪除模式空間中的行

sed 高級 d.PNG

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

 

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

(0)
AN0519AN0519
上一篇 2016-08-15 09:24
下一篇 2016-08-15 09:24

相關推薦

  • 學習的第二周

    硬鏈接不能跨分區,硬鏈接不支持對目錄的創建, 硬鏈接的本質是一個文件N個節點  ls |xargs rm 解決參數太長 無法正常刪除的問題。   軟連接 依賴于原始文件 刪除就沒了軟連接可以跨分區,可以根據目錄創建軟連接,而且還可以針對文件夾 軟連接依賴于原始文件。原始文件刪了軟連接就打不開了  相對路徑一般相對當前工作目錄,但…

    Linux干貨 2017-05-30
  • 命令組合實戰

    1 列出/etc/下以。conf結尾的文件 [redsun@jiange root]$ ls  /etc/*.conf | tr 'a-z' 'A-Z'  | sed 's/ETC/etc/' > /tmp/etc.conf [redsun@jiange root]$ mo…

    Linux干貨 2016-11-13
  • 管理磁盤分區之fdisk詳解

    Mozatr的不定期更新,處于學習階段的Mozart,愿不斷分享,不斷進步。 此次分享一個重要的管理分區命令:fdisk ,我們一一闡述。 (一)分區 首先我們了解下什么是分區,分區是將一個硬盤驅動器分成若干個邏輯驅動器,分區是把硬盤連續的區塊當做一個獨立的磁盤使用。分區表是一個硬盤分區的索引,分區的信息都會寫進分區表。 分區的優點:  &nbsp…

    Linux干貨 2017-08-19
  • linux下正則表達式的學習

    linux 下正則表達式用法總結 正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。簡單的說,正則表示式就是處理字符串的方法。常用來匹配字符的元字符總結如下: Paste_Image.png 有了以上這些元字符原則上可以搜索出任務想要表達的字符,可為了更靈活使用,往往還要搭配一些次數匹配的用法 Paste_Image.png 例如:a&nbsp…

    Linux干貨 2017-06-04
  • linux的基本命令

    先安裝一個軟件SecureFX8.0,作為偽終端來遠程控制虛擬機 1.hostname是虛擬機連接的IP地址 下面來介紹一些linux的基本命令 1. useradd xx 創建一個用戶   userdel xx 刪除一個用戶 不刪除用戶的文件   User -r xx  刪除一個用戶且刪除該用戶的…

    2017-07-14
  • GNU awk

    文本處理三工具:grep, sed, awk grep, egrep, fgrep:文本過濾工具;pattern sed: 行編輯器 模式空間、保持空間 awk:報告生成器,格式化文本輸出;  AWK: Aho, Weinberger, Kernighan –> New AWK, NAWK  GNU awk, gawk&…

    Linux干貨 2015-12-03
欧美性久久久久