文本編輯工具Sed

                Stream EDitor, 行編輯器
         sed是一種流編輯器,它一次處理一行內容。處理時,一次性的先把文件讀入內存中,并且開辟一塊內存空間,該內存空間稱為“模式空間”(pattern space),接著用sed命令處理內存空間中的內容,處理完成后,把內存空間的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。 Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。

sed工具
用法:
sed [option]… 'script' inputfile…
常用選項:
         -n:不輸出模式空間內容的自動打印
         -e: 多點編輯,可以對一個文檔進行多次處理
         -f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本
         -r: 支持使用擴展正則表達式
         -i: 對文件進行直接編輯
script:
        格式:'地址命令'

sed工具
    地址定界:
      (1) 不給地址:對全文進行處理
      (2) 單地址:
         #: 指定的行
         /pattern/:被此處模式所能夠匹配到的每一行,可以寫正則表達式或一些模糊匹  配的字符。
      (3) 地址范圍:
         #,#

blob.png 

blob.png    

     #,+#

blob.png   

      /pat1/,/pat2/     搜索從pat1開始到pat2結束的行進行編輯

blob.png 

f2文件中以root開頭,以bash結束的行


         #,/pat1/

blob.png 

f2文件中第一行到,有wang的行。
      (4) ~:步進
         1~2 奇數行

blob.png  

       2~2 偶數行

blob.png
sed工具
編輯命令:
d: 刪除模式空間匹配的行

blob.png 

刪除模式空間中的第一行,但是只刪除了f2文件模式空間中的第一行,f2文件中的第一行并沒有刪除。
p: 顯示模式空間中的內容

blob.png 

   先全部顯示模式空間中的內容,再把第一行再顯示一遍??梢约?span style="font-family:Calibri">-n過濾。
a \text:在行后面追加文本;支持使用\n實現多行追加

blob.png 

在行后添加文本


i \text:在行前面插入文本;支持使用\n實現多行插入

blob.png 

實現\n的多行插入

blob.png
c \text:替換行為單行或多行文本

blob.png 

f1模式空間中的內容替換為test。
w /path/to/somefile: 保存模式匹配的行至指定文件

blob.png 

f1模式空間中的第一行轉存到/testdir/f22文件中。
r /path/from/somefile:讀取指定文件的文本至模式空間中匹配到的行后

blob.png 

/testdir/f3中的China,打印到f1文件的行后。

上圖中,將f3中的China打印到f1中,只是在模式空間中做了修改,并沒有在源文件f1中作修改,要想在源文件中做修改用-i選項

blob.png 

若真想修改,可以先做個備份,用選項“.bak”  其中,bak這個后綴可以隨便起,下圖中的含義是在修改f1文件時,會先給f1文件作備份,產生一個f1.bak的新文件來存放f1原來的數據。之后才會將f3中的內容寫入f1中。

blob.png
=: 為模式空間中的行打印行號
!:模式空間中匹配行取反處理
blob.png

將除了含有wang的行打印行號。


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

blob.png 

查找出root,替換為ROOOT。

替換標記:
g: 行內全局替換

blob.png 

f1文件中的所有小寫字母替換成A。
p: 顯示替換成功的行


w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

blob.png 

將行首為r的行打印并存儲到/testdir/f11文件中。

sed示例
sed ‘2p’ /etc/passwd

打印/etc/passwd的第二行
sed –n ‘2p’ /etc/passwd

不顯示模式空間中的內容,打印/etc/passwd的第二行
 sed –n ‘1,4p’ /etc/passwd

不顯示模式空間中的內容,打印/etc/passwd的第一行到第四行
 sed –n ‘/root/p’ /etc/passwd

不顯示模式空間中的內容,打印以root為行首的行
 sed –n ‘2,/root/p’ /etc/passwd

從第二行開始匹配到root結束的行
 sed -n ‘/^$/=’ file

顯示空行行號
 sed –n –e ‘/^$/p’ –e ‘/^$/=’ file

不顯示模式空間中的內容,打印空行,并顯示空行行號


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

搜索包含root的行后打印Superman
 sed ‘/root/i\superman’ /etc/passwd 行前

搜索包含root的行前打印superman
 sed ‘/root/c\superman’ /etc/passwd

搜索包含root的行,替換為superman

sed示例
 sed ‘/^$/d’ file

打印文件的空行
 sed ‘1,10d’ file

打印文件的一到十行
 nl /etc/passwd | sed ‘2,5d’

打印/etc/passwd文件中的二到五行
nl /etc/passwd | sed ‘2a tea’

打印/etc/passwdde 第二行下加tea
 sed 's/test/mytest/g' example

替換exampletestmytest
 sed –n‘s/root/&superman/p’ /etc/passwd

root后面添加superman
 sed –n‘s/root/superman&/p’ /etc/passwd

root前面添加superman
 sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets

替換pets文件的模式空間中的dogcathilo
 sed –i.bak ‘s/dog/cat/g’ pets

編輯pets文件,全部將dog替換為cat,并備份


 

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

(0)
zzdzzd
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • 邏輯卷管理工具lvm2

    lvm2:location Volume Manage Version 2 linux支持邏輯卷的模塊為dm模塊                        dm模塊是將一個或多個底層物理設備組織成一個邏輯設備的模塊。 在CentOS中,…

    Linux干貨 2016-03-27
  • redis主/從配置及基于sentinel的故障轉移

    ?一、NoSQL基礎概念: ACID:原子性、一致性、隔離性、持久性;特性:數據量大、數據變化非常大(數據增長化、流量分布變化、數據間耦合結構變化)、數據源很多; CAP、BASECAP C:多個數據節點的的數據一致;A:用戶發出請求后的有限時間范圍內返回結果;P:network partition,網絡發生分區后,服務是否依可用;CAP理論:一個分布式系統…

    Linux干貨 2017-12-18
  • 文件搜索之find的使用

    一.find介紹:   find是Linxu中一個十分常用的文件查找工具,其工作原理是通過遍歷啟起始路徑下文件層級結構完成的,其特點是查找速度慢,能做到實時查找和精確查找。 二.使用方法: find  start_path search_conditions  action 1.statr_path:所要查找的文件的起始位置,默…

    Linux干貨 2016-11-01
  • Linux進程管理-初級

    Linux進程管理-初級 背景: 在學習完Linux進程管理后,發現這一塊的知識點比較多,很多都是自己以前沒有接觸過的,而且這部分知識對今后的工作有很大幫助,在這里做個學習的總結,供以后復習。 進程介紹: 什么是進程 進程(Process):運行中的程序的一個副本,是被載入內存的一個指令集合,進程有進程ID(Process ID,PID),用來標記每個進程,…

    2017-08-26
  • 進程管理

    進程管理 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能 用戶模式(空間),內核模式(空間) Process(進程):運行中的程序的一個副本         存在生命周期 task struct:內核的結構體 Linux內內核存儲進程信息的固定格式:tas…

    Linux干貨 2016-09-10
  • IO,用戶與組管理,文件,目錄權限管理

           文件統配匹配模式:元字符文件名通配符*匹配任意長度的任意字符[root@localhost ~]# ls /root/D*/root/Desktop  /root/Documents  /root/Downloads ?匹配單個任意字符[root@localhost ~]# …

    Linux干貨 2016-08-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-10 17:05

    對于sed一些常見的用法給處理分析與羅列,script包括兩部分:地址定界+編輯命令

欧美性久久久久