sed [OPTION]… {script-only-if-no-other-script} [input-file]…
sed:stream editor流編輯器的簡稱,可以用來過濾和轉換文本,以下是一些常用示例。假設,我們有文本file.txt內容如下:
- 字符替換操作
s表示替換操作,默認情況下,sed只替換每行首次出現的匹配字串,所以在上面的示例中,第一行中的第二個和第三個unix沒有被替換。
2.替換某一行中第幾次出現的字串
使用/1,/2等標識,指定替換某一行中第幾次出現的匹配字串,比如,本示例中使用/2,表示替換每一行中第二次匹配的字串。
3.替換匹配字串
使用*/g*標識
4.替換每一行中第幾次開始出現到每一行結束的所有匹配字串
使用/1,/2等以及/g標識,本例中,我們指定替換每一行中從第三次匹配到行尾的所有匹配字串。
5.使用其他分隔符
默認情況下,我們使用反斜槓*/*作爲分隔符,比如替換url地址中的協議頭:
sed 's/http:\/\//www/' file.txt
這種情況下,字串包含了我們的分隔符,如果要正確的使用sed命令,我們需要對字串中的分隔符關鍵字進行轉義,這樣做的話,代碼既不美觀而且可讀性也比較差,因此,我們可以通過修改分隔符的方式實現。
比如使用下劃線
sed 's_http://_www_' file.txt
還可以使用豎線分隔符
sed 's|http://|www|' file.txt
6.使用&符號作爲匹配字串
比如,如果我們需要查找某些匹配字串,並且對應匹配的字串前後增加一些其他的字符,這時候,我們就可以使用*&*符號
7.使用\1,\2等標識
模式中,第一對括號用\1表示,以此類推,比如,你想替換某個字串兩次,那麼可以使用如下方式:
比如,前後兩個字符交換位置
或者,交換每一行中前三個字符的順序:
8.重複打印替換行
你可以使用/p來重複打印替換行,如果某一行存在匹配字串,那麼*/p*參數會在終端重複打印替換後的內容,如果當前行不存在匹配字串,沒有進行替換操作,那麼僅打印一次原來的內容。
9.只打印替換後的內容
使用*-n*參數,接例8,如果我們只想打印顯示替換後的內容,那麼我們可以通過指定**-n**參數來實現。
10.同時執行多個sed命令
方式一,前者的輸出作爲後者的輸入。
方式二,使用**-e**參數
11.對指定行進行字串替換
只對第三行執行字串替換
12.只對特定範圍的字串進行替換
只對第一到第三行的內容執行字符替換操作
從第二行開始直到文件最後一行
13.匹配行上進行替換
首先指定一個匹配模式,如果當前行存在匹配字串,則將當前行中的A替換爲B,下圖示例中,如果當前行中存在linux字串,則將該行中的unix替換爲centos
14.刪除行
可以刪除指定行或者多行
15.複製行
使用/p
16.作爲grep命令
17.匹配行後添加一行
使用a
- 匹配行前添加一行
使用i
19.替換某一行
使用c
20.字符轉換操作,類似tr操作
使用/y
https://www.folkstalk.com/2012/01/sed-command-in-unix-examples.html