Stream Editor
sed(意為流編輯器,源自英語“stream editor”的縮寫)是Unix常見的命令行程序。sed用來把文檔或字符串里面的文字經(jīng)過一系列編輯命令轉(zhuǎn)換為另一種格式輸出。sed通常用來匹配一個或多個正則表達式的文本進行處理。
分號(;)可以用作分隔命令的指示符。盡管sed腳本固有的很多限制,一連串的sed指令加起來可以編程像 倉庫番、快打磚塊、甚至俄羅斯方塊等電腦游戲的復雜程序。
sed : Stream Editor(流編輯器)的用法
sed默認情況下不對原文件做處理.
sed [options] '[Address]Command' file ...
Options:
-n, --quiet, --silent : 靜默模式,不再自動輸出模式空間里的內(nèi)容,而只會顯示命
令-p要求顯示的內(nèi)容.
-i : 直接修改原文件.
-e script : 可以同時執(zhí)行多個腳本
-f ed-script-file : 從腳本文件中讀取編輯命令,當有多個命令需要執(zhí)行時,這個很有用.
-r : 使用擴展正則表達式
Address:
1.StartLine,Endline 比如1,100
2./RegExp/ 比如 sed "/^root/d" /etc/passwd (這里的雙斜線//不能少)
3./pattern1/,/pattern2/ # 第一次被pattern1匹配到的行開始到第一次被pattern2
匹配到的行結束
4. LineNumber # 精確匹配指定的行
5.$ : 匹配最后一行
6.StartLine,+N # 從開始行,向后的N行.
7.! -->取反 示例: /used/ !s/new/used/g 將沒有used的其它行的new改成used
Command:
d : 刪除. 比如: sed '1,2d' /etc/fstab
p : 打印,顯示符合條件的行.
a \string : 在指定的行后面追加新行,內(nèi)容為string
i \string: 在指定的行前而插入新行,內(nèi)容為string
r filename:(read text) :在指定的行后添加入文件內(nèi)容
R filename:(read lines) : 在指定的行后添加入文件的一行內(nèi)容.
w filename
Write the current pattern space to filename. 例如 sed "/oot/w /tmp/oot.txt" /etc/fstab
W filename
Write the first line of the current pattern space to filename. This is a GNU exten‐
sion.
s/pattern/string/修飾符 :(查找并替換,默認只替換每行中第一次被模式匹配到的
pattern可使用正則)
修飾符:
g: 全局替換
i: 忽略大小寫
數(shù)字: 如1表示僅替換第1個