sed命令是流編輯器。
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的東營網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
工作流程是:每次將相應(yīng)的行==》模式空間(內(nèi)存中)==》模式匹配在處理==》將模式空間里的內(nèi)容輸出到屏幕。
注:sed命令默認不處理原數(shù)據(jù),而是處理原數(shù)據(jù)的副本。
用法
格式:sed ‘AddressCommand’ file
對指定文件中符合Address(地址篩選的行)進行Command(命令處理)
Address支持的用法:
1,起始行,結(jié)束行。例‘1,,100’(1到100行)
2,/正則匹配/ 支持正則模式匹配。里‘/^root/’(以root為行首的行)
3,/正則匹配1/,/正則匹配2/ 表示被模1式匹配到的行開始到被模式2匹配到的行
4,行號 精確匹配到某行,$表示最后一行。例‘1’(第一行)
5,起始行,+n 從起始行開始,到之后的N行
Command用法:
d:刪除符合條件的行。 例 sed '1,2d' /etc/passwd(刪除/etc/passwd中的第一到第二行) sed '/^root/d' /etc/passwd(刪除/etc/passwd中root為行首的行) sed '/^\//d' /etc/passwd(刪除etc/passwd中/開頭的行,\為轉(zhuǎn)意) p:顯示符合條件的行。例 sed '/^\//p' /etc/passwd(顯示etc/passwd中/開頭的行)
a(apend) /string:在指定的行后追加字符串string新行,\n表示換行
i(insert) /string:在指定的前插入字符串string新行,\n表示換行
r file:將指定的文件的內(nèi)容添加至符合條件的行處
w file:將指定的范圍內(nèi)的內(nèi)容另存(會保存)到指定的文件中
s 查找并替換:將匹配到的內(nèi)容進行替換
用法 sed 's/查找內(nèi)容(支持正則)/替換內(nèi)容(字符串,不支持正則)/修飾符'file 。在每行中默認只替換在該行中第一次匹配到的內(nèi)容。
修飾符:g 全局替換。i 忽略大小寫。
注:在s命令中,只要三個分割符一樣,大部分符號都可以作為分隔符,這樣可以在匹配沖突時換分隔符避免使用轉(zhuǎn)移符
例:sed 's#\(l..e\)#\1r#g' 文件名?;?sed 's#l..e#$r#g' 文件名
$:為引用模式匹配的所有內(nèi)容。
$與后向引用的差別:只引用匹配內(nèi)容中的一部分內(nèi)容是,只能用后向引用。
例: sed 's#l\(..e\)#L\1#g' 文件名
sed命令選項:
-h:禁默模式,不在顯示模式空間的內(nèi)容
-i:直接修改原文件
-e:同時執(zhí)行多個腳本 -e 地址命令 -e 地址命令 ...
-f 指定文件:sed -f /path/scripts file 表示腳本里的內(nèi)容出來文件
-r:支持擴展正則