sed講解與使用

        sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。

        格式如下:

        sed[option]… 'script' inputfile… 

        常用選項
            -n:不輸出模式空間內容的自動打印
            -e:多點編輯
            -f /PATH/TO/SCRIPT_FILE::從指定文件中讀取編輯腳本
            -r:支持使用擴展正則表達式
            -i:原處編輯   
        script:‘地址命令’

        地址定界:
            (1) 不給地址:對全文進行處理
            (2) 單地址:
                #: 指定的行
                /pattern/:被此處模式所能夠匹配到的每一行
            (3) 地址范圍:
                #,#
                #,+#
                /pat1/,/pat2/
                #,/pat1/
            (4) ~:步進
                1~2 奇數行
                2~2 偶數行

         編輯命令:
            d:刪除模式空間匹配的行
            p:顯示模式空間中的內容
            a \text:在行后面追加文本;支持使用\n實現多行追加
            i\text:在行前面插入文本;支持使用\n實現多行插入
            c \text:替換行為單行或多行文本
            w /path/to/somefile:保存模式匹配的行至指定文件
            r /path/from/somefile:讀取指定文件的文本至模式空間中匹配到的行后
            =:為模式空間中的行打印行號
            !:模式空間中匹配行取反處理 

        替換標記:

            s///:查找替換,支持使用其它分隔符,s@@@,s###
            g:行內全局替換
            p:顯示替換成功的行
            w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
sed示例
sed‘2p’ /etc/passwd

2p.jpg

sed –n ‘2p’ /etc/passwd

n2p.jpg

sed –n ‘1,4p’ /etc/passwd

1,4.jpg

sed –n ‘/root/p’ /etc/passwd

 root.jpg

sed–n ‘2,/root/p’ /etc/passwd從2行開始

2root.jpg

sed -n ‘/^$/p’ file 顯示空行行號

空行.jpg

sed –n –e ‘/^$/p’ –e ‘/^$/p’ file

eee.jpg

sed‘/root/a\superman’ /etc/passwd行后

a.jpg

sed‘/root/i\superman’ /etc/passwd行前

i.jpg

sed‘/root/c\superman’ /etc/passwd代替行

c.jpg

sed‘/^$/d’ file

d.jpg

sed‘1,10d’ file

dd.jpg

nl/etc/passwd| sed‘2,5d’

ddd.jpg

nl/etc/passwd| sed‘2a tea’

2a.jpg

sed's/sync/mysync/g'

 sg.jpg

sed–n‘s/root/&superman/p’ /etc/passwd單詞后

 &.jpg

sed–n‘s/root/superman&/p’ /etc/passwd單詞前

2&.jpg

sed ‘s/var/cat/’ -e ‘s/sbin/lo/’ pets

 e.jpg

sed–i.bak ‘s/sbin/cat/g’ pets

bak.jpg

1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符

1.jpg

2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符

2.jpg

3、在/root/install.log每一行行首增加#號

3.jpg

4、在/etc/fstab文件中不以#開頭的行的行首增加#號

4.jpg

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名

5.jpg

6、利用sed 取出ifconfig命令中本機的IPv4地址

6.jpg

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

7.jpg

 

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

(1)
msj77539273msj77539273
上一篇 2016-08-15 14:31
下一篇 2016-08-15 14:31

相關推薦

  • 系統排錯——如何修復和保護你的系統

    作業 1、破解root口令,并為grub設置保護功能 開機啟動時按e進入grub菜單,然后按a 編輯當前菜單的kernel選項,在后面追加1,s,S,single中的任意一個,然后回車,輸入b鍵啟動 進入了單用戶模式,可以直接修改root密碼 如何為grub設置保護功能: (1)、首先生成grub的md5密碼 (2)、修改grub.conf文件 (3)、重啟…

    Linux干貨 2016-09-12
  • 馬哥教育網絡班20期+第2周課程練習

    1、Linux上的文件管理命令有哪些?其常用的使用方法及相關示例演示。 答: cp 復制、 mv 移動、rm 刪除 (1)cp :復制文件或目錄         用法:    cp [OPTION]… [-T] SOURCE DEST    cp [OPTI…

    Linux干貨 2016-06-16
  • 如何在微軟云上搭建mysql主從

    大家好: 今天我分享下在生產環境的微軟云服務器上如何搭建mysql主從: 環境如下圖: 我把cnux06-testing設為Mysql主服務器,暫時沒需求的cnux04-web1db2設為Mysql從服務器 1–首先要在master上開啟binlog日志功能并使主從庫中的 server-id保持不同 操作步驟如下: A: 先查看mysql的主目錄…

    Linux干貨 2017-02-14
  • N25第三周作業(用戶組,和文本管理)

    列出當前系統 上所有已經登錄用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可. 列出最后登錄到當前系統的用戶相關信息. 命令who查看所有用戶 , tail查看后幾行 取出當前系統上被用戶當作其默認shell的最多那個shell. 命令cut 分割 , -d 指定分隔符,-f指定字段 uniq 顯示或忽略重復行信息   -c:顯示并統計重復…

    Linux干貨 2016-12-19
  • CentOS7編譯安裝LAMP—php-fpm

    inux的環境是: [root@localhost ~]# lsb_release -a LSB Version:     :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description:     CentOS…

    Linux干貨 2016-12-21
  • linux基礎學習-第八天

    2016-08-08 授課內容: 處理文本的工具sed vim編輯器 Shell腳本編程基礎介紹 sed:sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),     接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。默認不編輯原文件,僅…

    Linux干貨 2016-08-10
欧美性久久久久