sed筆記

編程能力:
    腳本編程


grep, sed(流編輯器), awk     

sed基本用法:
sed: Stream EDitor
    行編輯器 (全屏編輯器: vi)
    
sed: 模式空間
默認不編輯原文件,僅對模式空間中的數據作處理;然後,處理結束後,將模式空間打印至屏幕;


sed [options] 'AddressCommand' file ...   (注:address和command之間不須要空格等字符)
    -n: 靜默模式,再也不默認顯示模式空間中的內容
    -i: 直接修改原文件
    -e SCRIPT -e SCRIPT:能夠同時執行多個腳本
    -f /PATH/TO/SED_SCRIPT
        sed -f /path/to/scripts  file
    -r: 表示使用擴展正則表達式
    
Address:
一、StartLine,EndLine
    好比1,100
    $:最後一行
二、/RegExp/
    /^root/
三、/pattern1/,/pattern2/
    第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的全部行
四、LineNumber
    指定的行
五、StartLine, +N
    從startLine開始,向後的N行;
    
Command:
    d: 刪除符合條件的行;
    p: 顯示符合條件的行;
    a \string: 在指定的行後面追加新行,內容爲string
        \n:能夠用於換行
    i \string: 在指定的行前面添加新行,內容爲string
    r FILE: 將指定的文件的內容添加至符合條件的行處
    w FILE: 將地址指定的範圍內的行另存至指定的文件中;
    s/pattern/string/修飾符: 查找並替換,默認只替換每行中第一次被模式匹配到的字符串
        加修飾符
        g: 全局替換
        i: 忽略字符大小寫
        s///: s###, s@@@    分隔符同樣就行,能夠吧「/」換成「@」,「#」
        \(\), \1, \2正則表達式

 

        &: 引用模式匹配整個串        編程

 


    l..e: like-->liker
          love-->lover        編輯器


          like-->Like
          love-->Lovespa

這時候只能引用模式匹配指定的部份內容:
   ip

 

sed '$r /etc/issue' /etc/fstab字符串

sed '/oot/w /tmp/txt' /etc/fstabstring

sed 's/oot/OOT/' /etc/fstabit

sed 's/oot/OOT/g' /etc/fstabio

sed 's/oot/OOT/i' /etc/fstabawk

 

 


sed練習:
一、刪除/etc/grub.conf文件中行首的空白符;
sed -r 's@^[[:space:]]+@@g' /etc/grub.conf
二、替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab
三、刪除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
四、刪除/etc/inittab文件中開頭的#號;
sed 's@^#@@g' /etc/inittab
五、刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符;
sed -r 's@^#[[:space:]]+@@g' /etc/inittab
六、刪除某文件中以空白字符後面跟#類的行中的開頭的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
七、取出一個文件路徑的目錄名稱;
echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'    
基名:
echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'    

 


#abc# hello world   # hi world            練習:傳遞一個用戶名參數給腳本,判斷此用戶的用戶名跟其基本組的組名是否一致,並將結果顯示出來。

相關文章
相關標籤/搜索