文本處理之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:讀取指定文件的內容至模式空間中匹配到的行后

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

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

 重要編輯命令:

    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
下一篇 2016-08-15

相關推薦

  • 文件系統知一二

    文件系統知一二 What?文件系統是什么?     我們經常說文件系統,那么文件系統是什么東西呢?    計算機的文件系統是一種存儲和組織計算機數據的組織結構。 常見的文件系統有哪些?           &n…

    Linux干貨 2016-03-09
  • vim文本編輯器使用

    vim文本編輯器使用

    2017-09-20
  • LVM2 邏輯卷管理工具

    LVM2:  LVM: Logical Volume Manager, Version: 2  dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊; /dev/dm-#  /dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/…

    Linux干貨 2015-09-19
  • lvs的四種調度類型和調度算法介紹

    lvs是linux內核級的負載均衡解決方案,作為netfilter的補充套件,其工作在INPUT hook上。 相比nginx等負載均衡解決方案的差異如下: lvs工作于內核空間,不受用戶空間套接字和端口數量的限制,而且所有調度工作在內核空間完成,效率更高; nginx為七層負載均衡器,雖然通過stream模塊也可以做到四層負載均衡,但是受到套接字數量限制,…

    Linux干貨 2017-06-25
  • php-fpm

    1.安裝 mariadb 服務 修改配置文件 2.musql 安全加強 3.安裝 php-fpm php-mysql php-mbstring php-mcrypt 服務 修改配置文件 4.安裝httpd服務 加虛擬主機配置文件 5.測試php網頁 6.安裝myadmin包及測試

    2017-06-04
  • 流編輯器Sed(Stream Edit)詳解

    流編輯器Sed(Stream Edit)詳解       Grep 、sed 和awk并稱為文本三劍客。使用Grep就可以很好的實現文本查找的功能,而且簡單有效。然而其卻無法直接對其進行編輯,sed的出現便解決了這一問題。 Sed被稱為流編輯器,它是一種新型的非交互式的文本編輯器,它逐行處理文件或輸入,并將結…

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