【Linux學習011】sed命令詳解

一、簡介

    sed(Stream EDitor)是一種行編輯器,Linux中有三種常見的行編輯器:gred,sed,awk,其中awk命令最複雜,grep命令最簡單,sed命令難度適中。

    sed命令能夠接收一個文件或者管道輸入流,以一次處理一行的方式處理完成整個文檔,能夠接收管道輸入流是sed命令的一個特色功能。

    sed命令的詳細使用方法在線手冊:http://www.gnu.org/software/sed/manual/sed.html

    sed最全命令格式展開   

sed OPTIONS... [SCRIPT] [INPUTFILE...]

    其中[SCRIPT]部分是由兩部分組成:Address Command  ,其實就是

sed OPTIONS... [Address[Command]] [INPUTFILE...]

二、Options

    1.    -n    啓用靜默模式。默認sed命令會打印出模式空間中的內容,使用該選項將不再打印。

    2.    -r    啓用擴展的正則表達式

    3.    -f    script-file    使用腳本文件添加額外的處理文本功能

    4.    -e    script         使用腳本添加額外的處理文本功能

三、Address

    Address的作用就是“選擇行(Selecting Lines)”,也就是選定作用範圍。

    1.n

        選擇指定的某行

    2.startline,endline

        指定開始行和結束行,比如3,5,指定第三行到第五行的所有行。

    3.startline~step

        指定開始行以及步長,2~3表示選定從第2行開始每3行直到文件尾部的所有行。

    4./RegExp/

        指定所有符合正則表達式的行,如果表達式中有/,必須使用\將其轉義:\/

    5.$

        選定文件最後一行

    6.startline,+n

        從startline開始,向後的n行

    7.startline,~n

        從startline開始,向前和向後的n行

四、Command

    緊接着Address的是Command,是對選中文本的操作

    1.d    刪除符合條件的行

    2.p    顯示符合條件的行,該命令一般和-n選項使用

    3.a \string    在在指定的行後面添加新行,內容爲string,可以使用\n換行

    4.i \string    在指定的行前面添加新行,內容爲string,可以使用\n換行

    5.s/regexp/replacement/flags    將匹配到的串替換成爲指定的字符串,分隔符/可以自定義,如果表達式中用到了/需要使用\進行轉義。

        flag可以包含

        g    :全局替換。默認只替換每行的第一個匹配項

        i      : 忽略字母大小寫

五、練習

    1.刪掉/etc/profile文件中行首的所有空白字符

sed -r 's/^[[:space:]]+//g' /etc/profile

        分析:刪除一行中的一部分字符使用替換功能,所以使用s命令,-r指定使用擴展的正則表達式。

    2.刪除/etc/profile文件中的空白行

sed -r '/^$/d' /etc/profile

    刪除行使用命令d,Address使用正則表達式^$匹配,但是需要加上//

    3.刪除/etc/profile文件中以#開頭並且後面帶有至少一個空格的字符

sed -r 's/^#[[:space:]]+//g' /etc/profile

     

    

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