sed命令

sed命令

語法和常用選項

-n 安靜模式鳞绕,不會輸出默認打印信息 加p標記 只會把匹配并修改的內(nèi)容打印出來

如: sed -n 's/hello/a/p' 將匹配到hello的行打印出來八酒,并將hello修改成a

-e 執(zhí)行多條子命令

如: sed -e 's/hello/a' -e 's/wo/b' 將hello換成a诈悍,將wo換成b

-i 將執(zhí)行的修改輸入到文件中,即可以修改文件中的數(shù)據(jù)

如: sed -i? 's/hello/a' file.txt 文件中每行匹配到hello的字符將改成a

-f 可以將子命令寫入腳本文件悬荣,使用-f指定文件執(zhí)行命令

如:sed -f command.txt data.txt

數(shù)字定址和正則定址

數(shù)字定址

sed -n '4s/hello/a/g' data.txt 將第四行中的hello替換成a并輸出打印

sed '4,6/hello/a/' data.txt 將第四行到第六行的hello替換成a

sed '2,+4s/hello/a/' data.txt 將第二行到之后的4行數(shù)據(jù)中的hello替換成a

sed '4,~3s/hello/a/' data.txt 將第四行到下一個是3的倍數(shù)的行數(shù)也就是第六行中的hello替換成a

sed '4~3s/hello/a/' data.txt 從第四行開始每隔3行將hello替換成a

sed '$s/hello/s/' data.txt 將最后一行的hello替換成s

sed '1!/hello/s/' data.txt 除了第一行的hello替換成s

正則定址

sed '/ni/d' message 將匹配到ni的行刪除

sed '/^$/d' message 將空行刪除

sed '/^ts/,/^k/d' 從匹配到ts開頭的行開始到匹配到k開頭的行刪除,如果沒有匹配到ts就沒有刪除的行,如果匹配到ts沒有匹配到k荆烈,則從匹配到ts開頭的行開始刪除到最后一行

sed '2,3{s/cn/kk/;s/a/b/}' message 從2到3行將cn替換成kk,將a替換成b

基本子命令

子命令a(在指定的行下邊添加數(shù)據(jù))

sed 'a A' message 在message文件中的每一行下邊都插入一行為a的內(nèi)容

sed '1,2a A' message 在message文件中的1到2行下邊插入一行a的內(nèi)容

子命令i(與命令a相似,只是在指定行的上邊添加內(nèi)容)

sed 'i A' message 在message文件中的每一行上邊插入一行為A的內(nèi)容

子命令c(將指定的行替換成指定的內(nèi)容)

sed 'c A' message 將message中的每一行替換成A

子命令d(將指定的行刪除)

sed '1,3d' message 將1到3行內(nèi)容刪除

sed 'd' message 將所有數(shù)據(jù)刪除

子命令y(只能替換字符憔购,字符數(shù)量需要相同宫峦,字符一一對應替換)

sed 'y/ab/qw/' message 將每一行的a替換成q,將b替換成w

子命令=(將行號打印出來)

sed '=' message 將每行的行號和數(shù)據(jù)打印出來

sed '1,2=' message 將1到2行的行號和數(shù)據(jù)打印出來

子命令r(類似a命令玫鸟,也是將內(nèi)容追加到指定行的后邊,只不過r是將指定文件的內(nèi)容添加到指定行下邊)

sed '2r a.txt' message 將a.txt的內(nèi)容添加到message的第二行的下邊

子命令s(替換字符串)

sed 's/ac/qw/' message 將message中的ac替換成qw

例子

message文件內(nèi)容:hello 123 world

sed -r 's/([a-z]+)( [0-9]+ )([a-z]+)/a/' message 輸出a 因為使用了擴展正則表達式所以要用-r

sed -r 's/([a-z]+)( [0-9]+ )([a-z]+)/\1\2\3/' message 輸出hello 123 world \1表示第一個括號的匹配結果 \2表示第2個括號的匹配結果 \3表示第3個括號的匹配結果

sed -r 's/([a-z]+)( [0-9]+ )([a-z]+)/&/' message 輸出hello 123 world? &表示正則表達式的整個匹配的結構集

sed -r 's/.*/111&222/' message 在message文件中的每行的首尾分別加上111导绷,222

sed 's/i/a/g' message 將message文件中的所有i字符替換成a字符,沒有加g則只將每行第一個i替換a

sed 's/i/a/2'? message 將message文件中的第二行的i字符替換成a字符

sed 's/i/a/w b.txt' message 把message的每行的i替換成a并將替換后的數(shù)據(jù)另存到b.txt文件中

sed 's/g/a/i' message 把message的每行的g或者G替換成a,i表示忽略大小寫

模式空間和保持空間

模式空間初始化為空屎飘,處理王一行后會自動輸出到屏幕并清除模式空間妥曲;保持空間初始化為一個空行,也就是默認帶一個\n,處理完不會自動清除

h:將模式空間內(nèi)容覆蓋到保持空間中

H:將模式空間內(nèi)容追加到保持空間中

g:將保持空間內(nèi)容覆蓋到模式空間

G:將保持空間內(nèi)容追加到模式空間

x:交換模式空間和保持空間的內(nèi)容

例子:

test.txt內(nèi)容

11111

22222

33333

44444

sed '{1h;2,3H;4G}' test.txt 輸出

11111

22222

33333

44444

11111

22222

33333

解釋:將模式空間的第一行替換保持空間的第一行,將模式空間的2到3行追加到保持空間钦购,然后將保持空間的內(nèi)容追加到模式空間并打印輸出

高級子命令

n:讀入下一行到模式空間檐盟,例:’4{n;d}’ 刪除第5行。

N:追加下一行到模式空間押桃,再把當前行和下一行同時應用后面的命令葵萎。

P:輸出多行模式空間的第一部分,直到第一個嵌入的換行符位置唱凯。在執(zhí)行完腳本的最后一個命令之后羡忘,模式空間的內(nèi)容自動輸出。P命令經(jīng)常出現(xiàn)在N命令之后和D命令之前波丰。

D:刪除模式空間中第一個換行符的內(nèi)容壳坪。它不會導致讀入新的輸入行,相反掰烟,它返回到腳本的頂端爽蝴,將這些指令應用與模式空間剩余的內(nèi)容。這3個命令能建立一個輸入纫骑、輸出循環(huán)蝎亚,用來維護兩行模式空間,但是一次只輸出一行先馆。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末发框,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子煤墙,更是在濱河造成了極大的恐慌梅惯,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仿野,死亡現(xiàn)場離奇詭異铣减,居然都是意外死亡,警方通過查閱死者的電腦和手機脚作,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門葫哗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缔刹,“玉大人,你說我怎么就攤上這事劣针⌒8洌” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵捺典,是天一觀的道長鸟廓。 經(jīng)常有香客問我,道長辣苏,這世上最難降的妖魔是什么肝箱? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮稀蟋,結果婚禮上煌张,老公的妹妹穿的比我還像新娘。我一直安慰自己退客,他們只是感情好骏融,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萌狂,像睡著了一般档玻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茫藏,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天误趴,我揣著相機與錄音,去河邊找鬼务傲。 笑死凉当,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的售葡。 我是一名探鬼主播看杭,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挟伙!你這毒婦竟也來了楼雹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤尖阔,失蹤者是張志新(化名)和其女友劉穎贮缅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體介却,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谴供,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了筷笨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胃夏,靈堂內(nèi)的尸體忽然破棺而出轴或,到底是詐尸還是另有隱情,我是刑警寧澤仰禀,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布照雁,位于F島的核電站,受9級特大地震影響答恶,放射性物質(zhì)發(fā)生泄漏饺蚊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一悬嗓、第九天 我趴在偏房一處隱蔽的房頂上張望污呼。 院中可真熱鬧,春花似錦包竹、人聲如沸燕酷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苗缩。三九已至,卻和暖如春声诸,著一層夾襖步出監(jiān)牢的瞬間酱讶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工彼乌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泻肯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓囤攀,卻偏偏與公主長得像软免,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焚挠,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351