Linux-grep、sed组哩、awk之sed命令

參考:
Linux文本三劍客超詳細教程---grep等龙、sed、awk - alonghub - 博客園 (cnblogs.com)
Linux三劍客(grep sed awk) 之 sed
linux命令總結sed命令詳解

sed

sed是對行處理的命令伶贰,要得到處理后的文件需要對處理后的文件進行重定向輸出蛛砰,可用來批量修改文本內(nèi)容

  1. sed工作原理
    sed把每一行存在臨時緩存區(qū),對該副本進行編輯黍衙,不會修改破壞源文件

  2. 使用
    1)格式

sed [options] '[地址定界] command' file(s)

2)常用options

  • -n:不輸出模式空間內(nèi)容到屏幕泥畅,即不自動打印,只打印匹配到的行
  • -e:多點編輯琅翻,命令順序會影響結果
  • -f:把Script寫到文件當中位仁,在執(zhí)行sed時-f 指定文件路徑,如果是多個Script方椎,換行寫
  • -r:支持擴展的正則表達式
  • -i:直接將處理的結果寫入文件
  • -i.bak:在將處理的結果寫入文件之前備份一份

3) 文本定位


image.png

4)正則表達式,必須結合-r選項

  • ^:行首定位符 ,匹配所有以特定字符開頭的行
  • $:行尾定位符聂抢,匹配所有以特定字符結尾的行
  • .:匹配除換行外的單個字符
  • *:匹配0或多個前導字符
  • []:匹配指定字符組內(nèi)任一字符
  • [^]:匹配不在指定字符組內(nèi)任一字符
  • \(..\):保存已匹配的字符
  • &:保存查找串以便在替換串中引用
  • \<:詞首定位符
  • \>:匹配包含以love結尾的單詞的行
  • x\{m\}:連續(xù)m個x
  • x\{m,\}:至少m個x
  • x\{m,n\}:至少m個x,但不超過n個x

測試

$ cat sed.txt
love
lovexyz
loooove
xlovey
xylove
   love
Aove
xxlove yy
looooooooooooooooooooove
looooooove
loooooooooooove
$ sed -n '/^love/p' sed.txt
love
lovexyz
$ sed -n '/love$/p' sed.txt
love
xylove
   love
#匹配包含字符I棠众、后跟兩個任意字符琳疏、再跟字母e的行
$ sed -n '/l..e/p' sed.txt
love
lovexyz
xlovey
xylove
   love
xxlove yy
#匹配在零個或多個空格緊跟著love的行
$ sed -n '/love*/p' sed.txt
love
lovexyz
xlovey
xylove
   love
xxlove yy
$ sed -n '/xlovey*/p' sed.txt
xlovey
xxlove yy
#匹配包含love和Aove的行
$ sed -n '/[Al]ove/p' sed.txt
love
lovexyz
xlovey
xylove
   love
Aove
xxlove yy
#匹配包含love且其前面的字符不在該區(qū)間內(nèi)字符的行
$ sed -n '/[^y-z]love/p' sed.txt
xlovey
   love
xxlove yy
#&代表查找串,字符串love將替換前后各加了一個b的引用,即love變成bloveb
$ sed -n 's/love/b&b/p' sed.txt
bloveb
blovebxyz
xbloveby
xybloveb
   bloveb
xxbloveb yy
#匹配包含以love開頭的單詞的行
$ sed -n '/\<love/p' sed.txt
love
lovexyz
   love
#匹配包含以love結尾的單詞的行
$ sed -n '/love\>/p' sed.txt
love
xylove
   love
xxlove yy
#匹配出現(xiàn)連續(xù)10個字母o的行
$ sed -n '/o\{10\}/p' sed.txt
looooooooooooooooooooove
loooooooooooove
#匹配至少5個連續(xù)字母o的行
$ sed -n '/o\{5,\}/p' sed.txt
looooooooooooooooooooove
looooooove
loooooooooooove
#匹配5~10個連續(xù)的o的行
$ sed -n '/o\{5,10\}/p' sed.txt
looooooooooooooooooooove
looooooove
loooooooooooove

5)操作命令


image.png

image.png

測試

#打涌张巍:p
$ sed -n '/love/p' sed.txt
#刪除:d
$ sed '3d' sed.txt
$ sed '3,$d' sed.txt #刪除3行~最后一行=保留第一二行
$ sed '/xlove/d' sed.txt #包含xlove的行均刪除
#替換:s
$ sed 's/love/hate/g' sed.txt #g表示全局替換疮薇,每行出現(xiàn)的所有l(wèi)ove都會被替換為hate;若無g我注,則只替換每行第一個love
$ sed -n 's/^love/hate/p' sed.txt  #打印行首有l(wèi)ove并替換為hate的行
$ sed 's/love$/& you/' sed.txt #將匹配以love結尾的行的末尾加上you(&指查找串匹配到的內(nèi)容)
$ sed -n 's/xlove/hate/gp' sed.txt  #將xlove全局替換為hate,并將匹配到的打印
$ sed 's/\(xlove\)y/\1hate/p' sed.txt #將xlove存儲迟隅,可以用\1來引用它但骨,則為xlovey替換為xlovehate
$ sed 's#xlove#b#g' sed.txt  #s命令后的字符即為查找串和替換串之間的分隔符,適用于查找路徑名或生日時
#指定行的范圍:逗號
$ sed -n '/love/,/yy/p' sed.txt #打印love和yy之間所有的行
$ sed '/love/,/yy/s/$/**hate**/' sed.txt  #修改從love到y(tǒng)y之間的所有行智袭,將各行行尾($)替換為字符串**hate**奔缠,換行符被移到新的字符串后面
#多重編輯:e
$ sed -e '1,3d' -e 's/love/hate/' sed.txt  #先刪除1~3行,再將love替換為hate
#追加:a
$ sed '/^xlove/a I do' sed.txt  #在行首包含xlove字符串的行后面追加一行I do吼野;若追加內(nèi)容多于一行校哎,則除最后一行外,其余都需要以\n結尾
#插入:i
$ sed '/xlove/i I do' sed.txt  #在x包含xlove的行前面插入一行I do
#修改:c
$ sed '/xlove/c yhate' sed.txt  #將xlove改為yhate
# 獲取下一行:n
$ sed '/xlove/{n;s/love/hate/;}' sed.txt #若匹配到xlove瞳步,就將下一行l(wèi)ove替換為hate
#轉換:y
$ sed '1,3y/love/LOVE/' sed.txt  #將1~3行的l闷哆、o、v单起、e分別替換為L抱怔、O、V嘀倒、E
#退出:q
$ sed '5q' sed.txt  #打印到第五行 sed程序就退出
$ sed '/xlove/{s/love/hate/;q;}' sed.txt  #匹配到xlove時屈留,先將love替換為hate,然后q命令讓sed退出

6)字符集

  • [:digit:]:所有數(shù)字测蘑,即[0-9]
  • [:lower:]:所有小寫字母
  • [:upper:]:所有大寫字母
  • [:alpha:]:所有字母
  • [:alnum:]:0-9灌危,a-z,A-Z
  • [:space:]:空白字符
  • [:punct:]:所有標點符號
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碳胳,一起剝皮案震驚了整個濱河市勇蝙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌固逗,老刑警劉巖浅蚪,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烫罩,居然都是意外死亡惜傲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門贝攒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗誊,“玉大人,你說我怎么就攤上這事」猓” “怎么了荒适?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長开镣。 經(jīng)常有香客問我刀诬,道長,這世上最難降的妖魔是什么邪财? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任陕壹,我火速辦了婚禮,結果婚禮上树埠,老公的妹妹穿的比我還像新娘糠馆。我一直安慰自己,他們只是感情好怎憋,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布又碌。 她就那樣靜靜地躺著,像睡著了一般绊袋。 火紅的嫁衣襯著肌膚如雪毕匀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天癌别,我揣著相機與錄音期揪,去河邊找鬼。 笑死规个,一個胖子當著我的面吹牛凤薛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诞仓,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼缤苫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墅拭?” 一聲冷哼從身側響起活玲,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍婉,沒想到半個月后舒憾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡穗熬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年镀迂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唤蔗。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡探遵,死狀恐怖窟赏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箱季,我是刑警寧澤涯穷,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站藏雏,受9級特大地震影響拷况,放射性物質發(fā)生泄漏。R本人自食惡果不足惜掘殴,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一蝠嘉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杯巨,春花似錦、人聲如沸努酸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽获诈。三九已至仍源,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舔涎,已是汗流浹背笼踩。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亡嫌,地道東北人嚎于。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像挟冠,于是被迫代替她去往敵國和親于购。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

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