sed(stream editor)是流編輯器。
Sed軟件有兩個內置的存儲空間:
- 模式空間(pattern space):是sed軟件從文本讀取一行文本然後存入的緩衝區(這個緩衝區是在內存中的),然後使用sed命令操作模式空間的內容。
- 保持空間(hold space):是sed軟件另外一個緩衝區,用來存放臨時數據,也是在內存中,但是模式空間和保持空間的用途是不一樣的。Sed可以交換保持空間和模式空間的數據,但是不能在保持空間上執行普通的sed命令,也就是說我們可以在保持空間存儲數據。
調用sed命令有兩種方式
- sed [options] '[Address]command' file(s)
- sed [options] -f scriptfile file(s)
選項
- -e command,--expression=command允許多臺編輯。
- -h,--help打印幫助,並顯示bug列表的地址。
- -n,--quiet,--silent取消默認輸出。
- -f,--filer=script-file引導sed腳本文件名。
- -V,--version打印版本和版權信息。
- -i,改變文件執行的結果(sed默認是不改變文件)
- -r,擴展正則表達
Address:
1、Startline,Endline
- 比如1,100
- $:最後一行
2、/RegExp/
- /^root/
3、/pattern1/,/pattern2/
- 第一次被pattern1匹配到的行開始,至第一次被 pattern2匹配到的行結束,這中間的所有行
4、LineNumber
- 指定的行
5、Startline,+N
- 從Startlin開始,向後的N行
COMMAND:
- d 刪除符合條件的行
- p 打印符合條件的行
- a \String:在指定的行後面追加新行
- \n:可以用於換行
- i \String:在指定的行前面追加新行
- r file:將指定的文件的內容添加至符合條件的行處
- #將文件word讀進來,放在匹配到abc行的後面
- w file:將地址指定的範圍內的行另存至指定的文件中
- #會覆蓋原有文件內容
- s///:查找的並替換,默認只替換每行中第一交被匹配到的字符串
- s/pattern/string/修飾符:查找的並替換,默認只替換每行中第一交被匹配到的字符串
\(\),\1,\2 後向引用 - s///g 全局替換,i 忽略字符大小寫
元字符集
- ^行首錨定
- 打印第一個字母是a的行,-n表示取消默認輸出
- $行尾鎖定
- 打印以字母a結尾的行
- .匹配一個非換行符的字符
- *匹配前面的表達式零次或多次
- +匹配前面的子表達式一次或多次
- ?匹配前面的子表達式一次或零次
- []匹配一個指定範圍內的字符
- [^]匹配一個不在指定範圍內的字符
- \(..\)保存匹配的字符
- &;保存搜索字符用來替換其他字符
- \<或\b:其後面的任意字符必須作爲單詞首部出現,例:/\<love/
- \>或\b:其後面的任意字符必須作爲單詞尾部出現,例:/love\>/
-
x\{m\}重複字符x,m次,如:/0\{5\}/匹配包含5個o的行。
-
x\{m,\}重複字符x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。
-
x\{m,n\}重複字符x,至少m次,不多於n次,如:/o\{5,10\}/匹配5--10個o的行。
- \w,匹配字母下劃線數字
- \W匹配非字母下劃線數字
其它示例
1、取出當前路徑的上級目錄
2、給每個單詞加上[]
3、將aaa BBB順序更換