網(wǎng)站寬度多少合適天津seo優(yōu)化公司
一、基本介紹
sed編輯器也叫流編輯器(stream editor),它是根據(jù)事先設(shè)計(jì)好得一組規(guī)則編輯數(shù)據(jù)流。
交互式文本編輯器(如Vim)中,可以用鍵盤(pán)命令交互式地插入、刪除或替換文本數(shù)據(jù)。
sed編輯器是根據(jù)命令處理數(shù)據(jù)流中的數(shù)據(jù),這些命令來(lái)自于命令行輸入,或者來(lái)自于保存在命令文本文件中。它可以執(zhí)行以下操作:
- 從輸入中讀取一行數(shù)據(jù);
- 根據(jù)所提供的編輯器命令匹配數(shù)據(jù);
- 按照命令修改數(shù)據(jù)流中的數(shù)據(jù);
- 將新的數(shù)據(jù)輸出到STDOUT
sed編輯器匹配并針對(duì)一行數(shù)據(jù)執(zhí)行所有命令后,就會(huì)讀取下一行數(shù)據(jù)并重復(fù)這個(gè)過(guò)程,在它處理完數(shù)據(jù)流中的所有行后,就結(jié)束運(yùn)行。
由于命令是按順序逐行執(zhí)行的,因此sed編輯器只需對(duì)數(shù)據(jù)流處理一遍(one pass through)即可完成編輯操作。這使得sed編輯器比交互式編輯器快得多,還可以快速完成對(duì)數(shù)據(jù)的自動(dòng)修改。
格式:
sed options script file
script:制定了應(yīng)用于流數(shù)據(jù)中的單個(gè)命令。如果需要多個(gè)命令,可以使用 -e 選項(xiàng)在命令行中指定;或者使用 -f 選項(xiàng)在單獨(dú)的文件中指定。
-e commands | 在處理輸入時(shí),加入額外的sed命令 |
-f file | 在處理輸入時(shí),將file中指定的命令添加到已有的命令中 |
-n | 不產(chǎn)生命令輸出,使用p(print)命令完成輸出 |
二、處理文本
1、在命令行中使用單個(gè)sed編輯器命令
默認(rèn)情況下,sed編輯器會(huì)將指定的命令應(yīng)用于STDIN輸入流中,所以可以直接將數(shù)據(jù)通過(guò)管道符傳入sed編輯器進(jìn)行處理。
替換命令:s;使用它可以將斜線間指定的第二個(gè)字符串替換掉第一個(gè)字符串。
echo "這是1個(gè)測(cè)試" | sed 's/1個(gè)/2個(gè)/'
?批量替換文件中某個(gè)字符:
sed 's/成都/蘇州/' test.txt
而且,sed編輯器并不會(huì)修改文本文件的數(shù)據(jù),它只是將修改后的數(shù)據(jù)發(fā)送到STDOUT。
查看文本文件內(nèi)容,依然未變。
2、在命令行中使用多個(gè)sed編輯器命令
?如果想執(zhí)行多個(gè)命令,可以使用 -e 選項(xiàng)。
多個(gè)命令都會(huì)應(yīng)用于文件的每一行數(shù)據(jù),命令之間必須要用分號(hào)(;)分隔開(kāi),并且命令末尾和分號(hào)之間不能出現(xiàn)空格。
sed -e 's/貴州/成都/;s/北京/廣州/' test.txt
也可以用bash shell中的次提示符來(lái)分隔命令。
必須要在閉合的單引號(hào)所在行結(jié)束命令。因?yàn)閎ash shell一旦發(fā)現(xiàn)了閉合單引號(hào),就會(huì)執(zhí)行命令。
3、從文件中讀取sed編輯器命令
?可以使用 -f 選項(xiàng)來(lái)讀取文件中的sed編輯器命令。