Linux sed命令介紹

簡介

sed命令應用廣泛,使用簡單,是文本流編輯器的利器,逐行對文件的內容進行處理處理時,把當前處理的行存儲在臨時緩衝區中,稱為“模式空間”(pattern space),可以指定僅僅處理哪些行。sed處理完成之後把緩衝區的內容送往屏幕,接著處理下一行,這樣不斷重複, 直到文件末尾。sed符合條件的處理,不符合條件的不予處理,文件內容並沒有改變,除非用重定向存儲輸出。

一. 簡單入門

1. 輸出範圍行


Linux sed命令介紹


參數 -n 這個參數是--quiet或者--silent的意思。表明忽略執行過程的輸出,只輸出我們的結果即可。

我們常用的還有另外一個參數:-i。使用此參數後,所有改動將在原文件上執行。你的輸出將覆蓋原文件。非常危險,一定要注意。

範圍1,4 表示找到文件中1,2,3,4行的內容。這個範圍的指定很有靈性,請看以下示例(請自行替換圖中的範圍部分)。

5 選擇第5行。

2,5 選擇2到5行,共4行。

1~2 選擇奇數行。

2~2 選擇偶數行。

2,+3 和2,5的效果是一樣的,共4行。

2,$ 從第二行到文件結尾。


Linux sed命令介紹


範圍的選擇還可以使用正則匹配。

請看下面示例:

/abc/,+3 選擇出現abc字樣的行,以及後面的三行。
/^abc/,/xyz / 選擇以abc開頭的行,和出現xyz字樣行之間的數據。

為了直觀,下面的命令一一對應上面的介紹,範圍和操作之間是可以有空格的。

sed -n '5p' test.txt

sed -n '2,5 p' test.txt

sed -n '1~2 p' test.txt

sed -n '2~2 p' test.txt

sed -n '2,+3p' test.txt

sed -n '2,$ p' test.txt

sed -n '/abc/,+3 p' test.txt

sed -n '/^abc/,/xyz/p' test.txt

Linux sed命令介紹


Linux sed命令介紹



操作 p表示打印


2 . 替換操作


Linux sed命令介紹


替換模式的參數有點多,但第一部分和第五部分都是可以省略的,"/"可以用"@"、”#“等符號代替。替換後會將整個文本輸出出來。前半部分用來匹配一些範圍,而後半部分執行替換的動作。

這裡的命令是指s。也就是substitute的意思。

sed 's/aaa/bbb/' a.txt #替換每一行的第1個aaa為bbb

sed 's/aaa/bbb/g' a.txt #替換每一行的所有aaa為bbb
sed 's/aaa/bbb/2' a.txt #替換每一行的第2個aaa為bbb
sed '1,10s/aaa/bbb/g' #替換第1行到第10行所有的aaa為bbb
sed 's/^[0-9]/(&)/' a.txt #將數字加上一個(), &為匹配到的內容

sed '/sys/,+3 s/a/b/g' file

sed '/^abc/,/xyz/s/a/b/g' file


Linux sed命令介紹



分享到:


相關文章: