ubuntu下sed命令詳解

2021-07-04 15:09:25 字數 2425 閱讀 2089

在我寫這篇blog之前還有點猶豫,因為像這麼著名的命令,sed和awk應該在很多書籍裡都有介紹,但是在網上找時,卻是寥寥無幾...

sed簡介

sed是一種非互動式的流編輯器,可動態編輯檔案。所謂非互動式是說,sed和傳統的文字編輯器不同,並非和使用者直接互動,sed處理的物件是檔案的資料流(稱為stream/流)。sed的工作模式是,比對每一資料行,若符合樣式,就執行指定的操作。

sed--version  

//檢視sed版本

sed語法

sed '操作命令'  操作物件 

特別注意:sed並不會更改檔案內容。sed的工作方式是讀取檔案內容,經流編輯之後,把結果顯示到標準輸出。因此,如果想要儲存sed的處理結果,得自行運用轉向輸出將結果存成其他檔案。

sed例項

用法1:刪除某一段範圍的資料行

sed '1,4d'  test.txt

//把第1到第4行資料刪除,剩下的顯示出來。d是sed的刪除命令

用法2:把含有"la"的資料行刪除。

sed '/la/d' test.txt

// 把含有la的行刪除,剩下的顯示出來。其中,/ / 代表搜尋之意。

用法3:使用正則匹配

sed '/[0-9]\/d'test.txt

// 把含有"3位數"的行刪除,剩下的顯示出來,在樣式[0-9]\中,\ 表//要尋找的是3個數字組成的字串

用法4:刪除空行

sed '/^$/d' test.txt

//刪除dataf5的空白行。^ 表開頭,$ 表尾部,這兩者之間沒有任何字元,代表該行是一空白行。

用法5:反向選擇

sed '/la/!d' test.txt

//把不含有la的行刪除,剩下的顯示出來,這裡的!是否定的意思,表示不符合樣式者

用法6:把含有"樣式"的資料行顯示出來

sed '/la/p' 

test.txt

//用途把含有la的行顯示出來。其中,p是sed的命令,它會把目前的資料顯示出來,但因為sed預設也會顯示不符合的資料行,所以,應改用以下指令:

sed -n '/la/p'test.txt

//選項-n會抑制sed顯示出其他資料行的預設操作,只顯示符合樣式的資料行。

//檢視指定行內容:sed -n np test.txt

用法7:替換

sed -n 's/la/oo/p' test.txt

//這裡的s是取代的意思,第一對//中含括的字串(la)是搜尋的目標,第二對//含括的是置換的字串(oo)。它會把資料行中的字串la換成oo。

//上面的這種表示替換的時候會出現重複行的問題不重複的行的命令是

sed s/la/oo/g test.txt >> outputfile

注意:上面這個指令,只會更換第乙個出現的la而已,如要全部置換,應再加上全域性的命令g

sed -n 's/la/oo/gp' test.txt

用法8:替換/刪除字元

sed -n 's/la//p'test.txt

//把每一行出現的第乙個la刪除(把la置換成空字串,就是刪除)

用法9:替換/萬用字元

sed 's/^...//' test.txt //把每一行開頭的3個字元刪除。

sed 's/...$//' test.txt 

//把每一行末尾3個字元刪除

其他用法:

1.sed -n '/aaa/s/234/567/p'test.txt 

//找到含有aaa的那一行之後,將234換成567

2.sed -n '/aaa/,/ddd/s/b/567/p'test.txt

//將含有aaa到含有ddd的那幾行,皆將其中的b換成567

3.sed -n '2,4s/b/567/p'test.txt

//從第2行到第4行,皆將其中的b換成567

4.sed g test.txt

//在每一行後面增加一空行

5.sed '/^$/d;g' test.txt

//將原來的所有空行刪除並在每一行後面增加一空行,這樣在輸出的文字中每一行後面將有且只有一空行

6.sed 'g;g' test.txt

//在每一行後面增加兩行空行

7.sed '/regex/' test.txt

//在匹配式樣「regex」的行之前插入一空行

8.sed '/regex/g'

//在匹配式樣「regex」的行之後插入一空行

9.sed 10q

//顯示檔案中的前10行

10.sed q

//顯示檔案中的第一行

……另外,我今天見到sed -i 的用法

這裡sed命令的-i選項,表示直接操作檔案ab.file。這裡是文字替換操作,將檔案中的所有a都替換為b。

預設情況下,sed 是不會修改檔案的,只會將操作結果列印到標準輸出(螢幕)。

sed命令詳解

sed 是乙個精簡的 非互動式的編輯器。它能執行與編輯vi和emacs相同的編輯任務。sed編輯器不提供互動使用方式 只能在命令列輸入編輯命令 指定檔案 名,然後在螢幕上察看輸出。sed編輯器沒有破壞性。它不會修改檔案,除非用shell重定向來儲存輸出結果。預設情況下,所以的輸出都被列印到螢幕上。1...

sed命令詳解

sed 簡介 sed 意為流編輯器,源自英語 stream editor 的縮寫 是unix常見的命令列程式。sed 用來把文件或字串裡面的文字經過一系列編輯命令轉換為另一種格式輸出。sed 通常用來匹配乙個或多個正規表示式的文字進行處理。分號 可以用作分隔命令的指示符。常用的sed命令 模式 p ...

sed命令詳解

sed編輯器逐行處理輸入,然後把結果傳送到螢幕。i選項 直接作用原始檔,原始檔將被修改。sed命令和選項 a 在當前行後新增一行或多行 c 用新文字替換當前行中的文字 d刪除行 i 在當前行之前插入文字 h把模式空間的內容複製到暫存緩衝區 h把模式空間的內容新增到緩衝區 g取出暫存緩衝區的內容,將其...