liunx中sed用法

sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。


sed使用參數:

            -n∶取消默認的輸出,使用安靜(silent)模式。

           -d: 刪除
           -e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編               輯
           -f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內。
           -r∶sed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)
           -i∶直接修改讀取的文件內容,而不是由屏幕輸出

舉例:刪除某行

    刪除第三行到第四行 

    [root@www tmp]# sed '3,4d' fstab

    刪除最後一行

    [root@www tmp]# sed '$d' fstab

    顯示第三行到第四行

    [root@www tmp]# sed -n '3,4p' fstab

    顯示最後一行

    [root@www tmp]# sed -n '$p' fstab

    顯示第五行

    [root@www tmp]# sed -n '5p' fstab

    查詢關鍵字xs所在所有的行

    [root@www tmp]# sed -n '/xs/p' fstab

    在第一行後增加字符串“hello”

    [root@www tmp]# sed -n '1a hello' fsta

    在第一行到第三行後增加字符串“hello”

    [root@www tmp]# sed -n '1,3a hello' fsta

練習

1:刪除/boot/grub/grub2.cfg文件中所有以空白字符開頭的行的行首的所有空白字符;

    ~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg

2:刪除/etc/fstab文件中所有以#開頭的行的行首的#號及#後面的所有空白字符;

    ~]# sed  's@^#[[:space:]]*@@'  /etc/fstab

3:輸出一個絕對路徑給sed命令,取出其目錄,其行爲類似於dirname

    ~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'




    

    

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