Linux文本處理工具(sed)

1.sed介紹正則表達式

  stream editor,行編輯器編輯器

  sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲"模式空間"(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕,而後讀入下行,執行下一個循環。若是沒有諸如‘D’的特殊命令,那會在兩個循環之間清空模式空間,但不會清空保留空間。這樣不斷重複,直到文件末尾。文件內容並無改變,除非使用重定向輸出功能spa

  功能:主要用來自動編輯一個或多個文件,簡化對文件的反覆操做,編寫轉換程序等blog

2.sed用法  ip

  用法:sed [option]... 'scripts' inputfileinput

  經常使用選項it

    -n:不輸出模式空間內容到屏幕上,即不自動打印io

    -e:多點編輯test

    -r:支持使用擴展正則表達式(默認使用基本正則表達式)stream

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

    -i.bak:備份文件並原處編輯(先生成一個.bak的備份文件,而後再進行編輯)

  scripts

    '地址+命令'

  地址定界:

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

    (2):單地址

      #:指定的行,$:最後一行

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

    (3):地址範圍

      #,#

      #,+#

      /par1/,pat2/:

      #,/pat1/

    (4):步進

      1~2:奇數行

      2~2:偶數行

  編輯命令

    d:刪除模式空間匹配的行,並啓用下一輪循環

    p:打印當前模式空間內容,追加到默認輸出以後

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

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

    a[\]text:在指定行後面追加文本

          支持使用\n實現多行追加

    i[\]text:在行前面插入文本

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

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

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

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

      替換標記: 

        g:行內全局替換

        p:顯示替換成功的行

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

sed示例:

  取ip地址:ifconfig eno16777736|sed -r '2!d;s@.*inet (.*)net.*@\1@'

  sed '2p' /etc/passwd

  sed -n '2p' /etc/passwd

  sed -n '1,4p' /etc/passwd

  sed -n '/root/p' /etc/passwd

  sed -n '2,/root/p' /etc/passwd

  sed -n '/^$/=' file 

  sed -n -e '/^$/p' -e '/^$/=' file

  sed '/root/a\superman' /etc/passwd

  sed '/root/i\superman' /etc/passwd

  sed '/root/c\superman' /etc/passwd

  sed '/^$/d' file

  sed '1,10d' file

  nl /etc/passwd|sed '2,5d'

  nl /etc/passwd|sed '2a\tea'

  sed 's/test/mytest/g' sed.txt

  sed -n 's/root/&superman/p' /etc/passwd

  sed -n 's/root/superman&/p' /etc/passwd

  sed -i.bak 's/test/mytest/g' sed.txt

3.sed高級用法

相關文章
相關標籤/搜索