sed命令

sed基本用法:

sed:stream editor,它是一個行編輯器,它並不編輯文件本身,它把符合條件的行讀入內存(模式空間),對其進行操作後顯示出來。


命令格式:

sed  [option] 'adresscommand' file

option:

    -n:不打印模式空間中的內容(靜默模式)

    -i:直接修改原文件

    -e:-e SCRIPTE -e SCRITE 可以同時執行多個腳本

    -f filename or path:可以把腳本寫入文件 ,然後讀取執行操作

    -r:表示使用正則表達式

Address:

  1. startline,endline,比如1,100

  2. /RegExp/, 比如/^root/,匹配以root開頭的行

  3. /pattern1/,/pattern2/  表示第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這之間所有行。

  4. linenumber 指定的行

  5. startLine,+N 表示從開始行向後的n行,一共n+1行。


command:

    d:刪除  例:#sed "1,2d" /etc/fstab 刪除文件前兩行 $代表最後一行

            sed "/oot/d" /etc/fstab 刪除文件中帶有oot的行

            sed "1d" /etc/fstab 刪除第一行

    p:顯示符合條件的行

            例:sed "/^\//d" 刪除以/開頭的行

    a:\string 在匹配的行後面追加新行,內容爲string

            例:sed "/^\//a \heheda" /etc/fstab 在以/開頭的行後追加heheda


    i:\string 在匹配的行前面插入新行,內容爲string

    r FILE :把文件內容添加到符合條件的行處

            例:sed "2r /etc/issue" /etc/fstab 在fstab第二行插入/etc/issue的內容

    w FILE :把符合條件的行保存到另一個文件中

            例:sed "/^1/w /hehe.txt" /etc/fstab 把開頭爲1的行另存爲至 、

    s/pattern/string/:查找並替換,默認替換每行中第一次被模式匹配到的串,如果要全局替換,則要加修飾符:

    修飾符:

        -g :全局替換: 例: sed "s/hehe/haha/g" /etc/passwd

        -i: 不區分大小寫

            例:sed "s/hehe/haha/" /etc/passwd 把每行中第一次出現的hehe替換成haha

            這裏的s///中的/可以爲三個任意想同字符:所以上面一句可以等價爲:

            sed "s@hehe@haha@" /etc/passwd

例子1:

l..e: like-->liker

      love-->lover


    sed "s#l..e#&r#g" sed.txt

    &:表示模式匹配到的整個串

也可以使用後向引用實現:

    sed "s#\(1..e\)#\1r#g" sed.txt


有些時候只可以使用後向引用,而不能使用&


比如:like-->Like

      love-->Love

      sed "s#l\(..e\)#L\1#g" sed.txt #\1就是代表前面括起來的部分


例子2:

刪除文件行首的空白字符

sed "s/^[[:space:]]*//" sed.txt


wKiom1XN-JbT6kibAAJEyzR6Xkg958.jpg






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