linux之文本內(nèi)容替換命令sed

sed簡介:流編輯工具冰垄,用來對文本進行過濾與替換操作掏熬。

sed流程:sed通過一次僅讀取一行內(nèi)容來對某些指令進行處理后輸出捻浦。

1、sed通過文件或管道讀取文件內(nèi)容屋确,但sed默認并不直接修改源文件纳击,而是將讀入的內(nèi)容復(fù)制到緩沖區(qū)中续扔,稱之為模式空間。
2评疗、所有的指令操作都是在模式空間找那個進行
3测砂、sed根據(jù)相應(yīng)的指令對模式空間中的內(nèi)容進行處理并輸出結(jié)果,默認輸出至標準輸出(即屏幕上)百匆。


image.png

sed基本語法格式:
用法:sed[選項]...{腳本指令}[輸入文件]...
選項: -version 顯示sed版本
-help :顯示幫助文檔
-n,-quiet,-silent靜默輸出砌些,默認情況下,sed程序在所有的腳本指令執(zhí)行完畢后加匈,將自動打印模式空間中的內(nèi)容存璃。
-e script允許多個腳本指令被執(zhí)行
-f script-file從文件中讀取腳本指令,對編寫自動化腳本程序很實用
-i ,-in-place 該選項直接修改源文件
-l N 該選項指定l指令可以輸出的行長度雕拼,l指令為輸出非打印字符纵东。
-posix 禁用GNU sed擴展功能。
-r 在腳本指令中使用擴展正則表達式啥寇。
-s偎球,-separate 默認情況下,sed將把輸入的多個文件名作為一個長的連續(xù)的輸入流辑甜。而GNU sed則允許把它們當作單獨的文件衰絮。
-u,-unbuffered 最低限度的緩存輸入與輸出
a磷醋,append表示追加指令猫牡;
i,insert表示插入指令邓线;
d淌友,delete表示刪除指令;
s骇陈,substitution表示替換指令震庭。
sed腳本指令的基本格式是:
[地址,即路徑]命令(有些命令僅可以對一行操作,有些可以對多行操作)你雌,命令也可以用花括號進行組合归薛,使命令序列可以作用于同一個地址。
address{
command1
command2
command3
}

比如:
sed '2a TYPE=Ethernet' test.txt  #第二行后追加TYPE=Ethernet
sed '3i TYPE=Ethernet' test.txt #第二行前追加TYPE=Ethernet
sed 's/yes/no/g' test.txt  #將樣本文件中的所有yes替換為no
sed '3,4d' test.txt  # 刪除第三匪蝙、第四行的內(nèi)容
將樣例文本中的第二個<body>替換為</body>,編寫sed腳本主籍,即將body替換為/body,但僅替換第二個body
cat sed.sh內(nèi)容如下:
/body/{
s::\/body:2
}
執(zhí)行sed命令: sed -f sed.sh test.txt

行編輯器介紹

  • Vim和sed awk的區(qū)別
    交互式與非交互式
    文件操作模式與行操作模式
  • sed的基本用法演示
    sed :一般用于對文本內(nèi)容做替換逛球,sed '/user1/s/user1/u1/' /etc/paswd

sed的基本工作方式

sed的基本工作方式是:

  • 將文件以行為單位讀取到內(nèi)存(模式空間)
  • 使用sed的每個腳本對該行進行操作
  • 處理完成后輸出該行

sed的替換命令s

sed的替換命令s:

  • sed 's/old/new' filename
  • sed -e 's/old/new' -e 's/old/new' filename
  • sed -i 's/old/new' 's/old/new' filename
    帶正則表達式的替換命令s:
    sed 's/正則表達式/new' filename
    sed -r 's/擴展正則表達式/new/' filename

sed的替換命令的加強版

1千元、全局替換 : s/old/new/g ,其中g(shù)為全局替換颤绕,用于替換所有出現(xiàn)的次數(shù)幸海; /如果和正則匹配的內(nèi)容沖突可以使用其他符號祟身,如 :s@old@new@g
2、標志位

  • 表示數(shù)字物独,第幾次出現(xiàn)才進行替換袜硫,如 :s@old@new@2
  • g 表示全局替換,如 :s@old@new@g
  • p打印模式空間的內(nèi)容 sed -n 'script' filename 阻止默認輸出
  • w file將模式空間的內(nèi)容寫入到文件
    尋址
    分組
    sed腳本文件

sed的多行模式

為什么要有多行模式: 配置文件一般有單行出現(xiàn)挡篓,但也有使用json或XML格式的配置文件婉陷,為多行出現(xiàn)。
多行模式處理命令N官研、D秽澳、P

  • N: 將下一行加入模式空間
    -D: 刪除模式空間中的第一個字符到第一個換行符
    -P: 打印模式空間中的第一個字符到第一個換行符
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市戏羽,隨后出現(xiàn)的幾起案子担神,更是在濱河造成了極大的恐慌,老刑警劉巖始花,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妄讯,死亡現(xiàn)場離奇詭異,居然都是意外死亡酷宵,警方通過查閱死者的電腦和手機亥贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忧吟,“玉大人,你說我怎么就攤上這事斩披×镒澹” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵垦沉,是天一觀的道長煌抒。 經(jīng)常有香客問我,道長厕倍,這世上最難降的妖魔是什么寡壮? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮讹弯,結(jié)果婚禮上况既,老公的妹妹穿的比我還像新娘。我一直安慰自己住闯,他們只是感情好工扎,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布藕畔。 她就那樣靜靜地躺著,像睡著了一般莫其。 火紅的嫁衣襯著肌膚如雪癞尚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天乱陡,我揣著相機與錄音浇揩,去河邊找鬼。 笑死憨颠,一個胖子當著我的面吹牛胳徽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烙心,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼膜廊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淫茵?” 一聲冷哼從身側(cè)響起爪瓜,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匙瘪,沒想到半個月后铆铆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡丹喻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年薄货,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍论。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡谅猾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳍悠,到底是詐尸還是另有隱情税娜,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布藏研,位于F島的核電站敬矩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蠢挡。R本人自食惡果不足惜弧岳,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望业踏。 院中可真熱鬧禽炬,春花似錦、人聲如沸勤家。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽却紧。三九已至桐臊,卻和暖如春胎撤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背断凶。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工伤提, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人认烁。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓肿男,卻偏偏與公主長得像,于是被迫代替她去往敵國和親却嗡。 傳聞我的和親對象是個殘疾皇子舶沛,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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