Linux三大文字處理工具之sed命令

2022-06-21 09:36:12 字數 2506 閱讀 3136

sed是一款流編輯工具,用來對文字進行過濾與替換操作,sed通過一次僅讀取一行內容來對某些指令進行處理後輸出,所以sed更適合於處理大資料檔案。首先,sed通過檔案或管道讀取檔案內容,但sed預設並不直接修改原始檔,而是將讀入的內容複製到緩衝區中,我們稱之為模式空間(pattern space),所有的指令操作都是在模式空間中進行的,然後sed根據相應的指令對模式空間中的內容進行處理並輸出結果,預設輸出至標準輸出(即螢幕上)。

工作流程如圖:

sed從檔案中讀取資料,如果沒有輸入檔案,則預設對標準輸入程序資料進行處理。

sed [選項]... [輸入檔案]

命令引數:

[位址]命令

d :delete 刪除,因為是刪除,所以 d 後面通常不接任何咚咚;

p :print 列印,亦即將某個選擇的資料列印出來。通常 p 會與引數 sed -n 一起執行。

s :substitute 替代,通常這個 s 的動作可以搭配正規表示法,例如 s/old/new/g ,後面的引數g: global 代表替換作用於全域性的每一行。如果沒有g,則至替換每行出現的第乙個匹配字元。

更多的指令大全如圖:

位址的匹配語法

(1)插入

(2)刪除

刪除指令需要注意以下幾點:

(1)刪除只能刪除整行,如果刪除部分需要用替換。

(2)刪除指令用於刪除匹配的行,而且刪除命令還會改變sed指令碼中命令的執行順序。因為匹配的行一旦刪除,模式空間將變為「空」,自然不會再執行sed指令碼後續的命令。刪除命令將導致讀取新的輸入行(下一行),而sed指令碼中的命令則從頭開始重新執行。

(3)列印

(4)替換

指令格式:[address]s/pattern/replacement/flags

address為操作位址,s為替換指令,/pattern/匹配需要替換的內容,/replacement為替換的新內容。

flags標記可以是:

replacement為字串,用來替換與正規表示式匹配的內容。在replace部分,只有下列字元有特殊含義:

示例 :

(5)更改

注意更改是會把整行更改,替換只會替換匹配的內容。

(6)執行多個指令

如果想要一次執行多個指令,主要有以下兩種方法:

(1)使用分號隔開使用

(2)使用-e 選項

把將樣本檔案中第二個替換為

[root@andrew andrew]# cat test.txt 

first web

hello the world!

指令檔案:

[root@andrew andrew]# cat sed.sh 

/body/

先匹配/body/,然後替換成//body/,最後2 表示的是匹配該行的第二個字串.後面的指令可以用花括號括起來。

執行結果:

[root@andrew andrew]# sed -f sed.sh test.txt 

first web

hello the world!

2.給每行前乙個的h1,h2等新增<>,後乙個h1,h2新增

[root@andrew andrew]# cat test.txt 

first web

h1helloh1

h2helloh2

h3helloh3

指令檔案:

[root@andrew andrew]# cat sed.sh 

/h[0-9]/

先匹配/h[0-9/,然後替換成/\/1,/\/\/2,其中& 表示前面匹配的字串,常用於在原有字串上增加字元。

執行結果:

[root@andrew andrew]# sed -f sed.sh test.txt 

first web

Linux三大文字處理工具之awk

awk也是乙個很強大的文字處理工具,與grep,sed 一起稱為linux文字處理的 三板斧 如圖,awk是逐行處理文字,將一行內容按照指定分隔符將行分割為多個字段,其中分割完後第乙個欄位為 1,第二個為 2。0表示當前處理的整行。除此之外,awk還有一些特殊的內建變數 awk option par...

Linux文字處理工具

linux中熟練的使用文字處理工具非常的重要,因為linux在設計的時候是採用一切皆檔案的哲學的,甚至連計算機中的配置也都使用偽檔案系統來表示,要查詢裡面的內容就是對檔案進行操作,所以學會使用檔案處理工具事半功倍。而在一切皆物件的windows中,因為物件封裝了所有的操作,包括顯示標準輸出的結果,使...

Linux 文字處理工具

tail f 執行tail f或tail f命令可以觀察檔案正在變化的內容 即跟蹤檔案的變化內容 檔案產生新內容時螢幕會顯示新增內容。seq n sort r head n 1 sort r命令能隨機排序。diff u file 1 file 2 file diff patch d file 1 f...