linux sed


    • sed 行編輯器,在內存緩存中一行一行處理,可以批量處理文件
        ○ 默認不修改文件
        ○ -n 自動關閉打印
        ○ -i 修改文件
        ○ -r 擴展正則表達式
        ○ -e 多點編輯,同時操作
        ○ p 打印
        ○ d 刪除
        ○ a\ 下一行追加
        ○ i\ 上一行插入
        ○ c\ 替換行

    • sed -n '1p' flie 只打印第一行(關閉自動打印)
    • sed -n '2p' file 打印第二行
    • ifconfig | sed -n '2p'
    • ifconfi | sed -n '3,5p' 打印3-5行
    • sed -n'/^[^#]/p' file 打印非井號開頭的行
    • sed '/^#/d' file 刪除#開頭的行
    • sed -i.bak '/^#/d' file 先備份文件為.bak,再刪除文件
    • sed 10 | sed -n '1~2p' 打印奇數行
    • sed 10 | sed -n '2~2p' 打印偶數行
    • sed 10 | sed '5a\XXXX' 在第五行下一行追加XXX
    • sed 10 | sed '5a\XXXX\nYYY' 在第五行下一行追加兩行
    • sed 10 | sed '5,8a\XXXX' 在第5-8行下一行追加XXX
    • sed 10 | sed '5,8c\XXXX' 在第5-8行替換成XXX
    • sed 10 | sed '5!d' 除了第五行全刪除
    • sed 's@/sbin/nologin@/test/test@' file 把/sbin/nologin替換為/test/test
    • sed 'GRUB_CMDLINE_LINUX/s/"$/ net.ifnames=0&/' /etc/default/grub 追加修改網卡名稱顯示信息
        ○ 查找 sed 'GRUB_CMDLINE_LINUX'
        ○ 替換 s/A/B/ A替換成B
    • sed -r 'GRUB_CMDLINE_LINUX/s/(.*)"/\1 net.ifnames=0 "/'/etc/default/grub


    • ifconfig eth0 | sed -n '2p' | sed 's/^.*net //' | sed 's/ netmask,*//' 獲取ip地址
    • ifconfig eth0 | sed -n '2p' | sed -e 's/^.*net //' -e 's/ netmask,*//' 獲取ip地址
        ○ sed 's/^.*net //' net之前替換為空
        ○ sed 's/ netmask.*//' netmask之后替換為空
        
    • sed -r 's/^#(NameVirtualHost)/\1/' /etc/httpd/conf/httpd.conf 刪除單行#
    • sed -r '@^#<virtualHost@,@</#virturlHost>@s@#@@' /etc/httpd/conf/httpd.conf 刪除指定范圍的#



sed高級用法

模式空間:sed命令每次處理一行記錄所用的空間
保持空間:模式空間處理的數據沒有完全結束,可以放到保持空間,臨時中轉站

    P:打印模式空間開端至\n內容,並追加到默認輸出之前
            §
    h: 把模式空間中的內容覆蓋至保持空間中
            § sed 10 | sed '1!G;h;$!d' 倒序(不是第一行執行h,不是最后一行刪除)
    H:把模式空間中的內容追加至保持空間中
    
    g: 從保持空間取出數據覆蓋至模式空間
    
    G:從保持空間取出內容追加至模式空間
    
    x: 把模式空間中的內容與保持空間中的內容進行互換
    
    n: 讀取匹配到的行的下一行覆蓋至模式空間
            § sed 10 | sed -n 'n;p' 打印偶數行
    N:讀取匹配到的行的下一行追加至模式空間
            § sed 10 | sed 'N;D' 打印最后一行
    d: 刪除模式空間中的行
    

D:如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,並不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間不包含換行符,則會像發出d命令那樣啟動正常的新循環


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM