sed-1

1 你想過(guò)sed為什么叫sed么?

sed是stream editor的縮寫(xiě),sed就是一個(gè)流編輯器,說(shuō)白了,就是我們往sed里輸入一串信息,它給我們處理,然后輸出來(lái)。就這么簡(jiǎn)單。

sed和cut類(lèi)似,是一個(gè)面向行處理的工具,它以“行”為處理單位,處理后的結(jié)果會(huì)輸出到標(biāo)準(zhǔn)輸出。所以說(shuō)其實(shí)sed命令很安全的,它不會(huì)對(duì)行本身所在文件做任何修改的。

sed的命令格式是:sed command file

其中,command部分是針對(duì)每行數(shù)據(jù)所做的處理(這部分很重要很重要,接著看,你會(huì)知道的),file是要處理的文件,如果忽略file參數(shù),則sed會(huì)把標(biāo)準(zhǔn)輸入作為處理對(duì)象。

2 sed的工作原理是什么?

sed會(huì)一次處理一行內(nèi)容。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱(chēng)為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒(méi)有改變,除非你使用重定向存儲(chǔ)輸出。

3 給個(gè)最最簡(jiǎn)單的sed命令的例子吧!讓我先有個(gè)感性認(rèn)識(shí),呵呵。

[rocrocket@rocrocket programming]$ cat roc.txt

test 1

test2

testtest

XtestX

BBtest

[rocrocket@rocrocket programming]$ sed ‘/2/d’ roc.txt

test 1

testtest

XtestX

BBtest

此例子是利用sed來(lái)刪除roc.txt文件里含有字符“2”的行。大家看到了,例子很簡(jiǎn)單,這個(gè)命令的command部分是/2/d,而且它是用單引號(hào)括起來(lái)的。你也一定要學(xué)著這樣做,只要用到sed,別忘了用單引號(hào)將command部分括起來(lái)。

/2/d中的d表示刪除,意思就是說(shuō)只要某行含有字符2,則刪除之。(你一定沒(méi)忘記,sed所謂的刪除都是在模式空間中執(zhí)行的,而原文件roc.txt毫發(fā)無(wú)損)

4 想實(shí)現(xiàn)類(lèi)似于cut -d : -f 1 /etc/passwd的效果,用sed怎么做呢?

(cut用法參見(jiàn)《cut命令》-linux命令五分鐘系列之十九

[rocrocket@rocrocket programming]$ head -n 5 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[rocrocket@rocrocket programming]$ head -n 5 /etc/passwd|sed ‘s/:.*$//’

root

bin

daemon

adm

lp

看到了吧,我們使用的command是’s/:.*$//’,其中的正則表達(dá)式s///是替換的經(jīng)典格式,如果你不太了解,可以看看我之前的一篇博客專(zhuān)題文章,講述的就是替換的藝術(shù):《vi中的替換藝術(shù)》-linux命令五分鐘系列之十一

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

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

  • sed(意為流編輯器,源自英語(yǔ)“stream editor”的縮寫(xiě))是Unix常見(jiàn)的命令行程序。sed 用來(lái)把文檔...
    趙者也閱讀 558評(píng)論 0 0
  • 與Vim的正則表達(dá)式有些不同,下面介紹sed的正則表達(dá)式: 1)^匹配一行的開(kāi)始 2) $匹配一行的結(jié)束 3) ....
  • 1 一兩句話描述一下cut命令吧! 正如其名,cut的工作就是“剪”,具體的說(shuō)就是在文件中負(fù)責(zé)剪切數(shù)據(jù)用的。 cu...
    shuff1e閱讀 338評(píng)論 0 0
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,171評(píng)論 2 33
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飛閱讀 1,105評(píng)論 0 2

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