文本處理之sed

 sed:是一種行編輯器,它在處理行時會把要處理的行讀入模式空間中,處理的是模式空間的內容,一行一行的處理,然后把處理結果顯示在屏幕中,不對原文做修改,除非強制重定向。

  好處:可同時編輯一個或多個文件,簡化了對文件的反復操作。

sed用法:

  格式: sed [options ]…'script' inputfile

常用選項:

     -n:不把模式空間的的內容自動打?。ㄖ伙@示匹配行)

     -e:同時編輯多個命令時使用

     -f /PATH/TO/SCRIPT-FILE:從指定文件中讀取編輯腳本

     -r:使用擴展正則表達式

     -i:對原文件進行編輯

示例:

 -n選項

[root@myhost bin]# sed -n '10p' /etc/passwd      打印/etc/passwd文件中的第十行

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

  -e選項                             

[root@myhost bin]# cat file                 

lksjjkfl

kjdskjlkj

kdddllkfl

[root@myhost bin]# sed -e 's/l/L/' -e 's/d/D/' file     把file文件中每行第一個l換成L,d換成D

Lksjjkfl

kjDskjLkj

kDddLlkfl

  -i選項

[root@myhost bin]# sed -i '1d' file        刪除file原文件中的第一行

[root@myhost bin]# cat file

kjdskjlkj

kdddllkfl

地址定界:

   1、不給地址:對全文進行處理

   2、單地址:

        #:指定的行

        /pattern/:被此處模式所能夠匹配到的每一行

   3、地址范圍:

        #,#:第幾行到第幾行

        #,+#:從第#行開始往后+#行

       /pat1/,/pat2/ :匹配模式1到模式2之間的行

       #,/pat1/:從第#行開始到匹配到模式1這行之間的行

   4、~:步進

     1~2:奇數行步進

     2~2:偶數行步進

編輯命令:

     d:刪除模式空間匹配到的行

     p:顯示模式空間中的內容

     a /text:在行后面追加文本,支持\n實現多行追加 

     i /text:在行前面追加文本,支持\n實現多行追加

     c /text:替換行為單行或多行文本

     w /path/to/somefile:保存模式匹配到的行至指定文件中

     r /path/to/somefile:讀取指定文件的內容至模式空間中匹配到的行后

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

     ?。耗J娇臻g中匹配行取反處理

 重要編輯命令:

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

     替換標記:

          g:行內全局替換

          p:顯示替換成功的行

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

          i:不區分大小寫

示例:

[root@myhost bin]# cat file

kjdskjlkj

kdddllkfl

[root@myhost bin]# sed '3d' file              刪除file文件中的第三行

kjdskjlkj

[root@myhost bin]# sed '/^$/a\hellow' file       在file文件中空行的后面添加一行hellow

kjdskjlkj

hellow

kdddllkfl

[root@myhost bin]# sed -n '/^$/=' file          顯示file文件中空行的行號

2

[root@myhost bin]# sed 's/k/&KK/' file          把fiel文件中每行的第一個k替換為kKK

kKKjdskjlkj

kKKdddllkfl

[root@myhost bin]# sed 's/k/KK&/' file          把fiel文件中每行的第一個k替換為KKk

KKkjdskjlkj

KKkdddllkfl

sed工具的高級編輯命令

             h:把模式空間中的內容覆蓋至保持空間中

             H:把模式空間中的內容追加至保持空間中

             g:從保持空間取出數據覆蓋至模式空間中

             G:從保持空間中取出內容追加至模式空間中

             x:把模式空間中的內容與保持空間中的內容互換

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

             N:追加匹配到的行的下一行覆蓋至模式空間

             d:刪除模式空間中的行

             D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed


sed命令練習題:

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

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

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

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

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

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

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


解答:

1、操作及效果

1.png

2、操作及效果

2.png

3、操作

3.1.png

 前后效果對比

3.2.png

4、操作前

QQ截圖20160813103257.png

 操作后效果

新.png

5、操作和效果

基名.png

6、操作效果

ifconfig.png

7、用兩種方法

她她她.png

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

(0)
ZJMZJM
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相關推薦

  • LInux用戶和組管理詳解

    一、用戶和組的概念 Linux系統是多任務、多用戶的分時操作系統。用戶要使用系統資源,需要向管理員驗證身份,由管理員進行認證和授權,并對用戶的行為進行追蹤和審計,以保障系統資源的合理分配以及系統的安全。 要達到賬號管理的目的,需要對用戶和用戶組進行管理。下面分別來介紹用戶管理和用戶組管理。 每個用戶都有唯一的一個編號來標識,這個標識號叫Uid,每個用戶至少屬…

    Linux干貨 2016-08-02
  • CentOS下獲取幫助

    CentOS中獲取幫助 在使用和學習CentOS系統時,我們可能會遇上不熟悉的命令,需要獲取幫助。在很多情況下,我們無法通過網絡獲取幫助,這個時候我們就需要自己通過查看系統幫助文檔來解決問題。下面就來介紹獲取幫助的方法: 1、 獲取簡單的幫助信息:whatis COMMAND   2、獲取比較詳細的命令幫助信息:help COMMAND;COMMA…

    2017-07-15
  • Linux創建CA和申請認證

    Linux創建CA和申請認證 背景: 在學習Linux運維中,學習到了CA的創建和申請認證,為了加深對CA的理解,這里做一個創建CA和申請認證的實驗并記錄下來供以后回顧。 介紹: 什么是CA認證? 電子商務認證授權機構(CA, Certificate Authority),也稱為電子商務認證中心,是負責發放和管理數字證書的權威機構,并作為電子商務交易中受信任…

    2017-09-09
  • 馬哥教育網絡班22期+第2周課程練習

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     Linux上文件管理類命令常用的有:pwd、ls、cd、cp、touch、mv、rm、rmdir (1)pwd:顯示當前路徑,打印工作目錄(Print Working Directory) (2)ls:查看指定目錄下的內容 參數 說明 -a 列舉目錄中的…

    Linux干貨 2016-08-29
  • linux作業管理

    作業管理 kill kill命令:     向進程發送控制信號,以實現對進程管理     顯示當前系統可用信號:kill -l     常用信號:man 7 signal    &…

    Linux干貨 2016-09-09
  • 第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 1.開啟電源后,POST自檢:檢查硬件設備,通過后交給BIOS 2.BIOS加載可選擇的啟動設備,尋找可引導的啟動設備的記錄:MBR 3.MBR:硬盤的主引導記錄,存在于0磁道0扇區,共512字節.其中Bootloader占用446字節,分區表占用64字節,magic nu…

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