sed:Stream Editor文本流編輯,sed是一個“非交互式的”面向字符流的編輯器。能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。
sed命令的語法格式:
sed的命令格式: sed [option] 'sed command'filename
sed的腳本格式:sed [option] -f 'sed script'filename
sed命令的選項(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上進行sed動作編輯,此為默認選項
-f :將sed的動作寫在一個文件內,用–f filename 執行filename內的sed動作
-r :支持擴展表達式
-i :直接修改文件內容
sed在文件中查詢文本的方式:
1)使用行號,可以是一個簡單數字,或是一個行號范圍
| x | x為行號 |
| x,y | 表示行號從x到y |
| /pattern | 查詢包含模式的行 |
| /pattern /pattern | 查詢包含兩個模式的行 |
| pattern/,x | 在給定行號上查詢包含模式的行 |
| x,/pattern/ | 通過行號和模式查詢匹配的行 |
| x,y! | 查詢不包含指定行號x和y的行 |



2)使用正則表達式、擴展正則表達式(必須結合-r選項)
| ^ | 錨點行首的符合條件的內容,用法格式"^pattern" |
| $ | 錨點行首的符合條件的內容,用法格式"pattern$" |
| ^$ | 空白行 |
| . | 匹配任意單個字符 |
| * | 匹配緊挨在前面的字符任意次(0,1,多次) |
| .* | 匹配任意長度的任意字符 |
| /? | 匹配緊挨在前面的字符0次或1次 |
| /{m,n/} | 匹配其前面的字符至少m次,至多n次 |
| /{m,/} | 匹配其前面的字符至少m次 |
| /{m/} | 精確匹配前面的m次/{0,n/}:0到n次 |
| /< | 錨點詞首----相當于 /b,用法格式:/<pattern |
| /> | 錨點詞尾,用法格式:/>pattern |
| /<pattern/> | 單詞錨點 |
| /(/) | 分組,用法格式:/(pattern/),引用/1,/2 |
| [] | 匹配指定范圍內的任意單個字符 |
| [^] | 匹配指定范圍外的任意單個字符 |
| [:digit:] | 所有數字, 相當于0-9, [0-9]---> [[:digit:]] |
| [:lower:] | 所有的小寫字母 |
| [:upper:] | 所有的大寫字母 |
| [:alpha:] | 所有的字母 |
| [:alnum:] | 相當于0-9a-zA-Z |
| [:space:] | 空白字符 |
| [:punct:] | 所有標點符號 |
| p | 打印匹配行(和-n選項一起合用) |
| = | 顯示文件行號 |
| a/ | 在定位行號后附加新文本信息 |
| i/ | 在定位行號后插入新文本信息 |
| d | 刪除定位行 |
| c/ | 用新文本替換定位文本 |
| w filename | 寫文本到一個文件,類似輸出重定向 > |
| r filename | 從另一個文件中讀文本,類似輸入重定向 < |
| s | 使用替換模式替換相應模式 |
| q | 第一個模式匹配完成后退出或立即退出 |
| l | 顯示與八進制ACSII代碼等價的控制符 |
| {} | 在定位行執行的命令組,用分號隔開 |
| n | 從另一個文件中讀文本下一行,并從下一條命令而不是第一條命令開始對其的處理 |
| N | 在數據流中添加下一行以創建用于處理的多行組 |
| g | 將模式2粘貼到/pattern n/ |
| y | 傳送字符,替換單個字符 |
對文件的操作無非就是”增刪改查“,怎樣用sed命令實現對文件的”增刪改查“,玩轉sed是寫自動化腳本必須的基礎之一。
sed命令打印文件信息(查詢):




sed命令實現對文件內容的添加:(對源文件添加的話就用-i參數):









sed命令實現對文件內容的刪除:(對源文件直接刪除用-i參數):
sed的刪除操作是針對文件的行,如果想刪除行中的某個字符,那就用替換(別急,替換稍后就講,而且替換是sed最常用的)




重點:sed命令實現對文件內容的替換(替換是在shell自動化腳本中用到最多的操作)
第一種當sed命令里面沒有默認的變量時可以把單引號改成雙引號;
第二種當sed命令里面有默認的變量時,那自己定義的變量需要加單引號,且sed里面的語句必須用單引
sed的其它高級使用:
1)把正在用sed操作的文件的內容寫到例外一個文件中
2)讀取一個文件到正在用sed操作的文件中
sed的經典例子:
學會sed的使用是寫自動化shell腳本的基礎,sed也是一個非常有用且重要的命令,是文本處理工具之一,以上是我自己學習總結的sed命令簡單的用法,sed還有更高級的用法,也還在學習中。
新聞熱點
疑難解答