命令行編輯器 - sed1

命令格式
sed options script file

-e script    在處理輸入時辙诞,將script中指定的命令添加到運行的命令中。
-f file       在處理輸入時缠捌,將file中指定的命令添加到運行的命令行的末尾
-n           不要為每個命令生成輸出构蹬,等待print命令來輸出

1.多個命令

master@master:~/shell$ sed 's/brown/green/; s/dog/cat/' data1
the quik green green fox jumps over the lazy cat
the quik green green fox jumps over the lazy cat
the quik green green fox jumps over the lazy cat
the quik green green fox jumps over the lazy cat
the quik green green fox jumps over the lazy cat
master@master:~/shell$ sed -e '
> s/brown/green/
> s/fox/dog/
> s/bug/ddd/' data1
the quik green green dog jumps over the lazy dog
the quik green green dog jumps over the lazy dog
the quik green green dog jumps over the lazy dog
the quik green green dog jumps over the lazy dog
the quik green green dog jumps over the lazy dog


2.從文件中讀取命令

master@master:~/shell$ cat script1
s/brown/green/
s/god/ddd/
s/green/yeyeew/

master@master:~/shell$ sed -f script1 data1
the quik yeyeew green fox jumps over the lazy dog
the quik yeyeew green fox jumps over the lazy dog
the quik yeyeew green fox jumps over the lazy dog
the quik yeyeew green fox jumps over the lazy dog
the quik yeyeew green fo

注意上面的替換只能替換每一行中的第一個單詞

3.更多的替換標記

(1)數(shù)字 替換第幾處
(2)g 替換所有
(3)p 原來行打印出來
(4)w file 將替換的結(jié)果寫入文件
(1)只替換第一出吧碾,且原始文件不變

master@master:~/shell$ cat data1
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
master@master:~/shell$ sed 's/the/the_/' data1
the_ quik brown green fox jumps over the lazy dog
the_ quik brown green fox jumps over the lazy dog
master@master:~/shell$ cat data1
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
(2)p 
注意蜜徽,p回輸出匹配的行和修改過的行

master@master:~/shell$ sed 's/test/trial/p' data1
this is a trial line
this is a trial line
this is a different line
master@master:~/shell$ cat data1
this is a test line
this is a different line

可以用-n 來只輸出修改過的行

master@master:~/shell$ sed -n 's/test/trial/p' data1
this is a trial line

(3)w 輸出到指定的文件

master@master:~/shell$ sed 's/test/trial/w testfile' data1
this is a trial line
this is a different line
master@master:~/shell$ cat testfile
this is a trial line

(3)特殊字符 /

master@master:~/shell$ sed 's//bin/bash//bin/csh/' /etc/passwd
root:x:0:0:root:/root:/bin/csh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

master@master:~/shell$ more /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

也可以換一個分割符號

master@master:~/shell$ sed 's!/bin/bash!/bin/csh!' /etc/passwd

####4.使用尋址
address {
  command1
  command2
}

master@master:~/shell$ cat data1
this is a test line
this is a different line
master@master:~/shell$ sed '2s/this/that/' data1
this is a test line
that is a different line
master@master:~/shell$

master@master:~/shell$ sed '2,3s/this/that/' data1
master@master:~/shell$ sed '2,$s/this/that/' data1

####5.文本模式過濾器
根據(jù)文本模式進行篩選

master@master:~/shell$ grep test data1
this is a test line
master@master:~/shell$ sed '/test/s/test/mytest/' data1
this is a mytest line
this is a different line

####6.組合命令

master@master:~/shell$ sed '1{
s/test/mytest/
}' data1
this is a mytest line
this is a different line
master@master:~/shell$

####7.刪除行

master@master:~/shell$ cat data
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
master@master:~/shell$ sed 'd' data

刪除第二行

master@master:~/shell$ sed '2d' data
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
master@master:~/shell$ sed '2,4d' data
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
master@master:~/shell$ sed '2,$d' data
the quik brown green fox jumps over the lazy dog

文本匹配刪除臣缀,如果the3沒有瞭亮,則會從the2一直刪除到最后
 '/the2/,/the3/d' 會刪除之間的

master@master:~/shell$ sed '/over/d' data
master@master:~/shell$ cat data
the quik brown green fox jumps over the lazy dog
the2 quik brown green fox jumps over the lazy dog
the1 quik brown green fox jumps over the lazy dog
the3 quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog
master@master:~/shell$ sed '/the2/,/the3/d' data
the quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog

####8.刪除和附加文本
插入命令i 會在指定的行前增加一個新行
追加命令a 會在指定的行后增加一個新行

master@master:~/shell$ echo "test 1" | sed 'i\Test2'
Test2
test 1

master@master:~/shell$ echo "test 1" | sed 'a\Test2'
test 1
Test2

指定行

master@master:~/shell$ sed '3i\this li insert line' data
the quik brown green fox jumps over the lazy dog
the2 quik brown green fox jumps over the lazy dog
this li insert line
the1 quik brown green fox jumps over the lazy dog
the3 quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog

插入多行文本,必須樣反斜杠

master@master:~/shell$ sed '3i\thisis line111\

thisli line2222' data
the quik brown green fox jumps over the lazy dog
the2 quik brown green fox jumps over the lazy dog
thisis line111
thisli line2222
the1 quik brown green fox jumps over the lazy dog
the3 quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog

####9.修改行

master@master:~/shell$ sed '3c
this is test' data
the quik brown green fox jumps over the lazy dog
the2 quik brown green fox jumps over the lazy dog
this is test
the3 quik brown green fox jumps over the lazy dog
the quik brown green fox jumps over the lazy dog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝗羊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子仁锯,更是在濱河造成了極大的恐慌耀找,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件业崖,死亡現(xiàn)場離奇詭異野芒,居然都是意外死亡,警方通過查閱死者的電腦和手機双炕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門狞悲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妇斤,你說我怎么就攤上這事摇锋。” “怎么了站超?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵荸恕,是天一觀的道長。 經(jīng)常有香客問我死相,道長融求,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任算撮,我火速辦了婚禮生宛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肮柜。我一直安慰自己陷舅,他們只是感情好,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布审洞。 她就那樣靜靜地躺著蔑赘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缩赛,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天耙箍,我揣著相機與錄音,去河邊找鬼酥馍。 笑死辩昆,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的旨袒。 我是一名探鬼主播汁针,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砚尽!你這毒婦竟也來了施无?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤必孤,失蹤者是張志新(化名)和其女友劉穎猾骡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敷搪,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兴想,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赡勘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫂便。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闸与,靈堂內(nèi)的尸體忽然破棺而出毙替,到底是詐尸還是另有隱情,我是刑警寧澤践樱,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布蔚龙,位于F島的核電站,受9級特大地震影響映胁,放射性物質(zhì)發(fā)生泄漏木羹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一解孙、第九天 我趴在偏房一處隱蔽的房頂上張望坑填。 院中可真熱鬧,春花似錦弛姜、人聲如沸脐瑰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苍在。三九已至绝页,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寂恬,已是汗流浹背续誉。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留初肉,地道東北人酷鸦。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像牙咏,于是被迫代替她去往敵國和親臼隔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容