linux下sed正則表達(dá)式匹配批量替換文件中的內(nèi)容

sed命令介紹

sed是一種流編輯器屋吨,它是文本處理中非常有用的工具针贬,能夠完美的配合正則表達(dá)式使用弧圆,功能不同凡響赋兵。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中搔预,稱為『模式空間』(pattern space)霹期,接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后拯田,把緩沖區(qū)的內(nèi)容送往屏幕历造。接著處理下一行,這樣不斷重復(fù)吭产,直到文件末尾。文件內(nèi)容并沒有改變鸭轮,除非你使用重定向存儲(chǔ)輸出。sed主要用來自動(dòng)編輯一個(gè)或多個(gè)文件窃爷,簡(jiǎn)化對(duì)文件的反復(fù)操作姓蜂,編寫轉(zhuǎn)換程序等。

基本語(yǔ)法

sed的命令格式:sed [options] 'command' file(s)
sed的腳本格式:sed [options] -f scriptfile file(s)

參數(shù)

參數(shù) 完整參數(shù) 說明
-e script -expression=script 以選項(xiàng)中的指定的script來處理輸入的文本文件
-f script --files=script 以選項(xiàng)中的指定的script文件來處理輸入的文本文件
-h --help 顯示幫助
-n --quiet --silent 僅顯示script處理后的結(jié)果
-V --version 顯示版本信息

命令

命令 說明
d 刪除覆糟,刪除選擇的行
D 刪除模板塊的第一行
s 替換指定字符
h 拷貝模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)
H 追加模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)
g 獲得內(nèi)存緩沖區(qū)的內(nèi)容遮咖,并替代當(dāng)前模板塊中文本
G 獲得內(nèi)存緩沖區(qū)的內(nèi)容,并追加到當(dāng)前模板塊文本的后面
l 列表不能打印字符的清單
n 讀取下一個(gè)輸入行御吞,用下一個(gè)命令處理新的行而不是第一個(gè)命令
N 追加下一個(gè)輸入行到模板塊后面并在二者間嵌入一個(gè)新行,改變當(dāng)前行號(hào)碼
p 打印模板塊的行
P 打印模板塊的第一行
q 退出sed
b label 分支到腳本中帶有標(biāo)記的地方陶珠,如果分支不存在則分支到腳本的末尾
r file 從file中讀行
t label if分支挟裂,從最后一行開始揍诽,條件一旦滿足或者T诀蓉,t命令,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處暑脆,或者到腳本的末尾
T label 錯(cuò)誤分支渠啤,從最后一行開始,一旦發(fā)生錯(cuò)誤或者T添吗,t命令沥曹,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處,或者到腳本的末尾
w file 寫并追加模板塊到file末尾
W file 寫并追加模板塊的第一行到file末尾
! 表示后面的命令對(duì)所有沒有被選定的行發(fā)生作用
= 打印當(dāng)前行號(hào)
# 把注釋擴(kuò)展到第一個(gè)換行符以前
接下來主要介紹替換功能

替換的使用

命令 說明
g 表示行內(nèi)全面替換
p 表示打印行
w 表示把行寫入一個(gè)文件
x 表示互換模板塊中的文本和緩沖區(qū)中的文本
y 表示把一個(gè)字符翻譯為另外的字符(但是不用于正則表達(dá)式)
\1 子串匹配標(biāo)記
& 已匹配字符串標(biāo)記

當(dāng)然要使用其功能需要對(duì)正則表達(dá)式有一定了解碟联。這里不在介紹妓美。

使用例子

創(chuàng)建一個(gè)文檔hello.txt:

you are a  boy.
hello
my name is han.
hello
hello,how do you do.
hello
nice to meet you. good job.

開始操作O(∩_∩)O~

替換hello成world,并打印到屏幕上

sed 's/hello/world/' hello.txt

s 表示替換
hello 表示匹配的字母鲤孵,是正則表達(dá)式
world 表示需要替換成的字母
執(zhí)行結(jié)果:


image.png

當(dāng)我們打開文件時(shí)壶栋,發(fā)現(xiàn)并沒有改變。這里只是替換緩存區(qū)內(nèi)的內(nèi)容普监,并不改變文件里的內(nèi)容委刘。

從開始位置替換,并加上回車

 sed 's/^hello/world\n/' hello.txt

執(zhí)行結(jié)果:


image.png

如果文件太大鹰椒,這樣打印就會(huì)顯示很多不必要的內(nèi)容锡移,這樣我們就可以使用只打印被匹配的行的命令。

只顯示被匹配的行

sed -n 's/hello/world/p' hello.txt

n和p的意思上文有介紹 不再解釋漆际。
執(zhí)行結(jié)果:


image.png
值得注意的是淆珊,如果想要回寫到文件中(和-i連用),不要只打印當(dāng)前匹配航奸汇,否者只會(huì)保存當(dāng)前匹配行施符,其他的丟失往声。

替換文件中的內(nèi)容,并寫到文件里

sed -i 's/o/ABC/' hello.txt

執(zhí)行結(jié)果:
執(zhí)行cat查看文件內(nèi)容:


image.png

可以看到雖然替換了戳吝,但是只替換了第一個(gè)被匹配的到內(nèi)容浩销。
如果想全部替換到字母'o',就需要使用參數(shù)'g'听哭。

全部替換慢洋,,并寫到文件里

sed -i 's/o/ABC/g' hello.txt
image.png

執(zhí)行后陆盘,全部的'o'普筹,都被替換了。

如果想批量修改代碼中的內(nèi)容使用它還是很方便的隘马。O(∩_∩)O哈哈~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末太防,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜒车,更是在濱河造成了極大的恐慌幔嗦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寓娩,死亡現(xiàn)場(chǎng)離奇詭異呼渣,居然都是意外死亡寞埠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蓝角,熙熙樓的掌柜王于貴愁眉苦臉地迎上來使鹅,“玉大人昌抠,你說我怎么就攤上這事〈渡唬” “怎么了冰沙?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵拓挥,是天一觀的道長(zhǎng)侥啤。 經(jīng)常有香客問我插龄,道長(zhǎng),這世上最難降的妖魔是什么均牢? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任徘跪,我火速辦了婚禮,結(jié)果婚禮上松邪,老公的妹妹穿的比我還像新娘。我一直安慰自己哨查,他們只是感情好逗抑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邮府,像睡著了一般溉奕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仙辟,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天叠国,我揣著相機(jī)與錄音戴尸,去河邊找鬼。 笑死吆玖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怜奖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼歪玲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼滥崩!你這毒婦竟也來了讹语?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤短条,失蹤者是張志新(化名)和其女友劉穎茸时,沒想到半個(gè)月后赋访,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渠牲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年嘱兼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贤徒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汇四。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡通孽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出互捌,到底是詐尸還是另有隱情潘明,我是刑警寧澤钳降,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布遂填,位于F島的核電站澈蝙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏灯荧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一客税、第九天 我趴在偏房一處隱蔽的房頂上張望撕贞。 院中可真熱鬧,春花似錦捏膨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至域蜗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筑累,已是汗流浹背丝蹭。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镜沽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓茵典,卻偏偏與公主長(zhǎng)得像宾舅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扶平,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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