sed文本處理工具

Sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。
下面來說說它的用法:
sed [option]… ‘script’ inputfile
sed:
-n:取消自動打印,輸出到屏幕。
-e: 多點編輯,對每行處理時,可以有多個Script 即可以跟多個命令。
-f: 把Script寫到文件當中,在執行sed時-f 指定文件路徑,如果是多個Script,換行寫
-r: 支持擴展的正則表達式
-i: 直接將處理的結果寫入文件
-i.bak? 在將處理的結果寫入文件之前先備份
script
地址定界:
(1) 不給地址:對全文進行處理
如:sed -n ‘p’ 文件
(2) 單地址:
#: 指定的行
如:sed -n ‘2p’ 文件
/pattern/:被此處模式所能夠匹配到的每一行
如:sed -n ‘/linux/p’文件
(3) 地址范圍:
#,#
如:sed -n ‘2,3p’
#,+#
如:?sed -n ‘2,+1p’
/pat1/,/pat2/
如:?sed -n ‘/redhat/,/linux/p’
#,/pat1/
如:sed -n ‘2,/linux/p’
(4) ~:步進
1~2 奇數行
2~2 偶數行
如:sed -n ‘1~2p’? 只打印奇數行
sed -n ‘2~2p’? 只打印偶數行

編輯命令:
d: 刪除模式空間匹配的行,并立即啟用下一輪循環
如:sed ‘2d’ /etc/passwd?(刪除/etc/passwd文件中的第二行)
p:打印當前模式空間內容,追加到默認輸出之后
如:sed ‘2p’?/etc/passwd
a [\]text:在指定行后面追加文本,支持使用\n實現多行追加
如:sed ‘2a\123\n456\n789‘?/etc/passwd
i [\]text:在行前面插入文本
如:sed ‘2i\123\n456\n789’?/etc/passwd
c [\]text:替換行為單行或多行文本
如:sed ‘2c\123\n456\n789’?/etc/passwd
w /path/somefile: 保存模式匹配的行至指定文件
如:sed -n ‘3w /root/3.file’?/root/bin
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
如:sed ‘3r /root/mage.txt’?/etc/passwd
=: 為模式空間中的行打印行號
如:sed ‘=’?/etc/fstab
!:模式空間中匹配行取反處理
如:sed -n ‘2!p’ /etc/fstab
s///:查找替換,支持使用其它分隔符,s@@@,s###替換標記。
如:sed -n ‘s/root/rooter/g’ /etc/passwd
g: 行內全局替換
如:sed ‘s/root/rooter/g’ /etc/passwd
p: 顯示替換成功的行
如:sed -n ‘s/root/rooter/gp’ /etc/passwd
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
高級編輯命令:
h: 把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d: 刪除模式空間中的行
D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed
示例:
sed -n ‘n;p’ FILE? 顯示偶數行
sed ‘1!G;h;$!d’ FILE? 倒序顯示
sed -n ‘1!G;h;$p’ 倒序顯示
seq 7 |sed ‘n;d’ 顯示奇數
sed? ‘N;D’ 顯示最后一行
sed ‘$!d’? 顯示最后一行
sed ‘G’? 每行之間加空行
sed ‘g’? 把每行內容替換成空行
sed ‘/^$/d;G’? 確保每一行下面都有一個空行

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89141

(0)
涼生涼生
上一篇 2017-12-01 20:40
下一篇 2017-12-02 10:51

相關推薦

  • linux上的文件查找工具:locate和find

    一、非實時超找工具 locate     1、locate是查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db文件索引實在系統比較空閑的時候自動進行的,是系統的周期性任務,因為是周期性任務,所以有些短期的數據無法更新到數據庫,如果需要馬上應用,乣管理員手動更新數據庫,用命令updatedb來執行。同時索引…

    Linux干貨 2016-08-16
  • 我的第一篇博客

        大家好,歡迎閱讀我的博客!     今天是我生平第一次寫博客,恩  為什么現在才開始寫呢?     其實是作業要求 哈哈!雖然是寫作業,本萌新也是很拼的!     希望在以后學習li…

    2017-07-10
  • class-6 積累應用

    1、三種權限rwx對文件和目錄的不同意義     ## 讀寫執行對于文件的意義         r:針對于文本文件         w:可修改內容,但不能刪除文件本身,需要x權限配合  &n…

    Linux干貨 2016-08-05
  • 優云APM最佳實踐: 診斷平安城市視頻網性能問題

    前言: 平安城市已經是一個關系你我他的民生工程,但由于本身系統的復雜性,給運維工作帶來了極大的挑戰。如何保障攝像頭在線率?如何在系統中找到視頻系統故障的問題所在?在我們某一次項目經歷中,優云APM在發現問題,定位故障等方面,起了很大作用,幫助我們順利的定位到了系統的故障所在。 平安城市是一個特大型、綜合性非常強的管理系統,不僅需要滿足治安管理、城市管理、交通…

    Linux干貨 2016-08-05
  • 8.3_Linux文件系統權限和特殊權限淺析

    什么是Linux文件系統權限? 在Linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 Linux文件系統權限的分類 Linux中的權限分為:read(讀)、write(寫)、execut(執行)三種權限 文件和目錄表示的權限也各有不同 權限對于文件的意義: r: 可使用文件查看類工具獲取其內容 w: 可修改內…

    Linux干貨 2016-08-05
  • 18文本處理工具sed

    18文本處理工具sed     sed,全稱Stream EDitor,是一種流編輯器,它一次處理一行內容,但是它構思巧妙,功能強大,是運維工作中必不可少的文本處理工具,也是因為這樣,被稱作文本處理三劍客之一。     sed在處理時,把當前處理的行李存儲在臨時緩沖區中,這個區域被稱作“模式空間pa…

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