sed命令用法詳解

1.sed運行原理

        sed(stream editor)是一個行處理器。處理時,把當前處理的行放到“模式空間中”,處理完畢后,把該行輸出到屏幕,接著處理下一行;這樣不斷重復,直到末行;此時文件本身內容并沒有改變

2.sed用途

        自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序

3.sed命令用法詳解

    (1)sed [option].. 'script' file..

            常用選項 -n 靜默模式,不輸出模式空間內容

                           -r 支持擴展正則表達式

                            -e 多點編輯

                            -f 從指定文件讀取編輯腳本

                            -i 原處編輯,改變文件本身內容

實例:a文件原本內容如下

1470794807750258.png

用sed使其顯示第一行,并在第二行前插入‘this is a test’

2.png

    (2)script格式:

             位置界定編輯命令

            a.地址界定

                    A不給地址,對全文界定

                    B單地址:

                                    # :指定的行

                                    /pattern/:被模式匹配的沒一行

                    C地址范圍:

                                    #1,#2:從#1行到#2行

                                    #1,+#2:從#1行開始,往下再匹配#2行

                                    /pat1/,/pat2/:從第一次匹配到pat1的行到第一次匹配到pat2的行

                                    #,/pat/:從#行到第一次匹配到pat的行

                    D~:步進

                                  1~2:  奇數行

                                  2~2: 偶數行

          b.常見的編輯命令

                p 顯示匹配到的行

                d刪除匹配到的行

                i\text在匹配行的前邊插入文本,加上\n,支持多行插入

                a\text在匹配行的下邊追加文本,加上\n,支持多行追加

                c\text把匹配行換為單行或多行文本

                =為模式空間中的行打印行號

                 !模式空間匹配行取反處理

                r file讀取指定文件到匹配行的后邊

                w file保存匹配行到指定文件

                

                s///查找替換,支持使用其它分隔符:s@@@ ,s###

                替換標記:

                        g;行內全局替換

                        p:顯示替換成功的行

                        w /path/to/somefile:就替換成功的行保存到文件中

實例一:在a文件第二行后邊追加兩行文本

1470796599150684.png

1470796606757725.png

實例二:處理b文件,以/^1/到/^4/行不輸出,然后把內容保存到/root/b文件下

4.png

5.png

            c.高級編輯命令

                    

                    d:刪除當前空間模式的行

                    D:刪除當前模式空間開端到\n的內容(不標準輸出),但剩余標準空間繼續執行sed

                    g:把保存空間內容覆蓋到模式空間

                    G:把保存空間內容追加到模式空間

                    h:把模式空間內容覆蓋到保存空間

                    H:把模式空間內容追加到保存空間

                    n:讀取匹配到的行的下一行覆蓋到模式空間

                    N:讀取匹配到的行的下一行追加到模式空間

                    x:模式空間和保存空間內容互換

實例解析:本實驗還是以a文件為實驗文件,a文件內容如下

        1470797740644619.png

 

        1.sed -n 'n;p' a:顯示的是偶數行

6.png

分析:‘-n’靜默模式,默認不輸出;‘n;p’里的n的作用是把匹配到的行的下一行覆蓋到模式空間,p是輸出到屏幕;當把第一行內容匹配進模式空間時,第二行會把第一行覆蓋掉,結果顯示的是第二行,然后處理第三行,顯示第四行內容,依次類推,直到行末。

        2.sed '$!N;$!D' a  只讀取最后兩行

             7.png

分析:‘$!N’意思是當不是最后一行時,讀取匹配到的行的下一行追加到模式空間;

            ‘$!D’意思為當不是最后一行時,刪除當前模式空間內容開始到/n結束,其余繼續接受sed處理

課后作業

1,刪除/etc/grub.conf中所有以空白開頭的行行首全部空白字符

     z1.png

2.刪除/etc/fstab中以#開頭,且后邊至少跟一個空白字符的行的行首的#和空白字符

z2.png

3.在/root/install.log每行行首添加#

組.png

4.在/etc/fstab中不以#開頭的行行首加上#

中.png

5.處理/etc/fstab,分別取出其目錄名與基名

值.png

6.用sed取出本機ipv4

6.png

7.統計centos安裝光盤里Package目錄下所有rpm文件以.分割的倒數第二個字段重復次數

(1)先查看光盤掛載在哪里

2.png

(2)4.png

原創文章,作者:mengzhiqian,如若轉載,請注明出處:http://www.www58058.com/32490

(1)
mengzhiqianmengzhiqian
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 96-Mariadb-1

        一. MariaDB or MySQL基礎知識                   層次模型 –> 網狀模型 –> …

    2016-11-18
  • Memcached命令

    Memcache 的命令行用法: 1、啟動Memcache 常用參數    memcached 1.4.3      -p <num>      設置端口號(默認不設置為: 11211)      -U <num> &nbsp…

    Linux干貨 2015-05-18
  • test

    test

    Linux干貨 2016-08-08
  • 定制SecureCRT配色

    定制SecureCRT配色 SecureCRT默認的配色方案不怎么喜歡,結合網上其他人的總結+自己的探索,總結怎樣定制自己的配色。配出自己喜歡的界面,還是會很有成就感的。 使用SecureCRT自帶主題 效果圖 圖中個文件的類型: compress.tar.gz 壓縮文件 directory 目錄 file.txt 普通文件&n…

    Linux干貨 2017-09-03
  • Linux基礎與命令解釋

    Linux基礎與命令 Linux起源     ? 1984 年:Richard Stallman 發起GNU 項目和自由軟件基金會 創建開源的UNIX 實用工具版本 創建通用公共許可證(GPL) ) 開源軟件許可實施原則 ? 1991 年:Linus Torvalds 發布Linux 創建開放源碼,類Unix 的內核,在GPL 下發布 下…

    Linux干貨 2017-03-17
欧美性久久久久