【OS_Linux】三大文本處理工具之sed命令
1、sed命令的簡介及用法
sed:即為流編輯器,“stream editor”的縮寫。他先將源文件讀取到臨時緩存區(也叫模式空間)中,再對滿足匹配條件的各行執行sed命令。sed命令只針對緩存區中的副本進行,不會修改或破壞源文件。默認情況下,屏幕上既會打印各行的原始內容又會打印處理後的結果。
如圖 1: sed 處理過程
sed語法:sed [選項] 匹配條件及編輯命令 輸入文本(文件)
選項:
-n∶使用安靜(silent)模式,只打印被sed命令處理過的結果行,不打印未被sed命令處理的行。
-e∶對模式空間中的各行執行多重編輯,編輯命令的順序將影響結果。
-r∶編輯條件中使用擴展的正則表達式
-i∶直接修改源文件,而不在屏幕上輸出
匹配條件:
1、采用正則表達式進行匹配(包括字符匹配、次數匹配、位置匹配)
2、行號匹配 (行號從1開始)
beginNumber~step:從行號為beginNumber開始,每隔step步長處理一次。例如: sed -n 2~5p 含義:從第二行開始匹配,隔 5 行匹配一次,即 2,7,12.......。
beginNumber, +N:從 beginNumber這行到往下 N 行匹配,總共匹配 N+1 行。
beginNumber, ~N:從addr1行開始,直到行號為N的整數倍時結束。
beginNumber, endNumber:行號為beginNumber到endNumber之間的行。
編輯命令:
命 令 | 說 明 |
i | 在當前行之前插入一行 |
a | 在當前行之後追加一行 |
c | 用新文本覆蓋(cover)當前行 |
d | 刪除匹配的行 |
g | 默認只修改各行中首次匹配成功的位置,該參數意為整行搜索和替換 |
p | 打印匹配的行 |
q | 結束或退出 sed命令 |
! | 反向匹配,即對未匹配成功的行執行sed命令 |
s | 用一個字符串替換另一個字符串 |
案例:
輸入文件為ceshi.txt
選項-n的作用:
默認情況下會將未被sed命令處理的行也打印出來
有了選項-n後只打印經sed命令處理的行
刪除命令d:刪除從第三行到最後一行內容
修改命令s:在以兩位數字結尾的行後面追加.5,符號“&”表示取匹配模式。
行追加命令a:
多個sed命令組成的通道:前一個sed命令的輸出作為下一個sed命令的輸入
[email protected]:~/learn/sed$ cat test.txt hi,this is sed command test file linux world is so amazing you will LOVE it! [email protected]-pc:~/learn/sed$ cat test.txt | sed ‘s/linux/LINUX/‘ | sed ‘s/sed/SED/‘ hi,this is SED command test file LINUX world is so amazing you will LOVE it!
2、用sed命令直接編輯源文件
法一:通過選項-i直接編輯源文件,而不是在屏幕上輸出
法二:先將sed處理的結果重定向到另外一個零時文件,再覆蓋源文件
本博文參考了:linux命令總結sed命令詳解 linux shell 腳本攻略學習19--sed命令詳解
【OS_Linux】三大文本處理工具之sed命令