Linux文本處理三劍客之sed

??sed是stream editor(流編輯器)的縮寫,是linux中文本處理非常重要的工具。它一次處理一行內(nèi)容,處理時,把當前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理模式空間中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容輸出,接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,因為這些都在模式空間處理的。sed可以用來自動編輯一個或多個

命令格式

sed [options] [command] file(s)

[option] 選項

-n: 僅顯示處理后的結(jié)果;
-i: 直接修改讀取的文件內(nèi)容,而不是輸出到終端;
-e <script>: 以選項中的指定的script來處理輸入的文本文件;
-f <script file>: 以選項中指定的script文件來處理輸入的文本文件;

[command] 命令

a: 新增,在當前行下面插入文本;
c: 取代, 把選定的行改為新的文本;
d: 刪除,刪除選擇的行;
i: 插入, 在當前行上面插入文本;
p: 打印,打印選擇行數(shù)據(jù),通常與sed -n一起使用;
s: 替換,替換指定字符串,通常與正則表達式一起使用;

用法實例

替換操作

將file文件中每一行第一個的oldStr替換成newStr

sed 's/oldStr/newStr/' file

使用后綴g標記會替換每一行中的所有匹配

sed 's/oldStr/newStr/g' file

-n選項和p命令一起使用表示只打印那些發(fā)生替換的行

sed -n 's/oldStr/newStr/p'

當需要從第N處匹配開始替換時,可以使用 /Ng

echo testtesttesttest | sed 's/test/TEST/2'
testTESTtesttest

定界符

其中 / 在sed中作為定界符使用,也可以使用任意的定界符:

sed 's|oldStr|newStr|' file
sed 's:oldStr:newStr:' file

定界符出現(xiàn)在樣式內(nèi)部時,需要進行轉(zhuǎn)義:

echo /bin | sed 's//bin//usr/local/bin/g'
/usr/local/bin

刪除操作

刪除空白行:

sed '/^$/d' file

刪除文件的第2行:

sed '2d' file

刪除文件的第2行到第5行:

sed '2,5d' file

刪除文件中所有開頭是test的行:

sed '/^test/'d file

多點編輯

-e選項允許在同一行里執(zhí)行多條命令。先刪除1至5行,再用test替換TEST:

sed -e '1,5d' -e 's/test/TEST/' file

從文件讀入

file里的內(nèi)容被讀進來,顯示在與test匹配的行后面,如果匹配多行,則file的內(nèi)容將顯示在所有匹配行的下面:

sed '/test/r file' filename

寫入文件

在example中所有包含test的行都被寫入file里

sed -n '/test/w file' example
截屏2020-08-02 下午4.12.29.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容