shell三劍客之sed

學(xué)習(xí)的內(nèi)容來自于Linux Shell腳本攻略(2)

內(nèi)容只做了簡單的記錄岳掐,方便自己學(xué)習(xí)

shell 命令查詢地址:http://man.linuxde.net/

Sed

Sed原名為stream editor 流式文本編輯器

那么什么是流式文本編輯器呢锥涕,就是他在運行的時候职烧,每次只處理數(shù)據(jù)中的一行集嵌。

Sed一共具有兩種緩存區(qū)少欺,一直叫做臨時緩存區(qū)正压,也就是工作區(qū)瓷式,稱為模式空間替饿。而另一種就是持久緩存區(qū),也就是存儲區(qū)贸典,稱為保存空間视卢。

首先Sed會接受一串需要處理的文本數(shù)據(jù),緊接著Sed會使用他的特性流式編輯來對文本驚醒處理瓤漏。模式空間時一塊活躍的緩存區(qū)腾夯,在這里Sed可以執(zhí)行他的命令。Sed會從數(shù)據(jù)中一行一行的取下數(shù)據(jù)放到模式空間中蔬充。而當(dāng)Sed在模式空間中處理數(shù)據(jù)的時候蝶俱,保持空間可以臨時保存一些數(shù)據(jù)行。但是在保存空間中饥漫,Sed無法執(zhí)行命令榨呆。

一開始 保存空間和模式空間內(nèi)的數(shù)據(jù)均為空

命令格式

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
-e<script>或--expression=<script>:以選項中的指定的script來處理輸入的文本文件;
-f<script文件>或--file=<script文件>:以選項中指定的script文件來處理輸入的文本文件庸队;
-h或--help:顯示幫助积蜻;
-n或--quiet或——silent:默認(rèn)情況下,模式空間中的內(nèi)容在處理完成后將會打印到標(biāo)準(zhǔn)輸出彻消,該選項用于阻止該行為竿拆;
-V或--version:顯示版本信息

1533102432644.png
a\ 在當(dāng)前行下面插入文本。
i\ 在當(dāng)前行上面插入文本宾尚。
c\ 把選定的行改為新的文本丙笋。
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 讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令酪惭。
N 追加下一個輸入行到模板塊后面并在二者間嵌入一個新行希痴,改變當(dāng)前行號碼。
p 打印模板塊的行春感。
P(大寫) 打印模板塊的第一行砌创。
q 退出Sed。
b lable 分支到腳本中帶有標(biāo)記的地方,如果分支不存在則分支到腳本的末尾。
r file 從file中讀行啼器。
t label if分支,從最后一行開始甲献,條件一旦滿足或者T,t命令颂翼,將導(dǎo)致分支到帶有標(biāo)號的命令處晃洒,或者到腳本的末尾。
T label 錯誤分支朦乏,從最后一行開始球及,一旦發(fā)生錯誤或者T,t命令呻疹,將導(dǎo)致分支到帶有標(biāo)號的命令處吃引,或者到腳本的末尾。
w file 寫并追加模板塊到file末尾刽锤。  
W file 寫并追加模板塊的第一行到file末尾镊尺。  
! 表示后面的命令對所有沒有被選定的行發(fā)生作用。  
= 打印當(dāng)前行號碼并思。  
# 把注釋擴(kuò)展到下一個換行符以前庐氮。 

1)比如我們使用其中d ,d表示delete刪除的意思 , -e 則表示接下來的會使用選項中指定的script來處理宋彼。

首先假設(shè)我們有這么一個文件


1533095401134.png

1533095563483.png

或者說我們可以用-f的方法來完成

1533096460073.png

/pattern/d 會刪除匹配樣式的行

Nd會刪除第n行

2)-p

1533102539963.png

3)-s

sed 's/patterns/replace_patterns' filename

sed -i 's/patterns/replace_patterns' filename 匹配的同時保存更改

sed 's/patterns/replace_patterns/g' filename /g表示替換所有匹配的項目

sed 's/patterns/replace_patterns'/Ng filename 從第n處匹配開始替換

字符/作為sed 's' 中的一種定界符旭愧,但是我們可以任意使用不同的定界符| . , 如果匹配的內(nèi)容中出現(xiàn)定界符了,那我需要用\|來轉(zhuǎn)換

g 表示行內(nèi)全面替換宙暇。  
p 表示打印行。  
w 表示把行寫入一個文件议泵。  
x 表示互換模板塊中的文本和緩沖區(qū)中的文本占贫。  
y 表示把一個字符翻譯為另外的字符(但是不用于正則表達(dá)式)
\1 子串匹配標(biāo)記
& 已匹配字符串標(biāo)記
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行先口。
$ 匹配行結(jié)束型奥,如:/sed$/匹配所有以sed結(jié)尾的行瞳收。
. 匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符厢汹,最后是d螟深。
* 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行烫葬。
[] 匹配一個指定范圍內(nèi)的字符界弧,如/[ss]ed/匹配sed和Sed。  
[^] 匹配一個不在指定范圍內(nèi)的字符搭综,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭垢箕,緊跟ed的行。
\(..\) 匹配子串兑巾,保存匹配的字符条获,如s/\(love\)able/\1rs,loveable被替換成lovers蒋歌。
& 保存搜索字符用來替換其他字符帅掘,如s/love/**&**/,love這成**love**堂油。
\< 匹配單詞的開始修档,如:/\<love/匹配包含以love開頭的單詞的行。
\> 匹配單詞的結(jié)束称诗,如/love\>/匹配包含以love結(jié)尾的單詞的行萍悴。
x\{m\} 重復(fù)字符x,m次寓免,如:/0\{5\}/匹配包含5個0的行癣诱。
x\{m,\} 重復(fù)字符x,至少m次袜香,如:/0\{5,\}/匹配至少有5個0的行撕予。
x\{m,n\} 重復(fù)字符x,至少m次蜈首,不多于n次实抡,如:/0\{5,10\}/匹配5~10個0的行。
1533094585156.png

【&】 已經(jīng)匹配的樣式

1533109251299.png

【\1】字串匹配標(biāo)記

1533110017940.png

這里匹配到的內(nèi)容是digit 7 欢策,這里/1所標(biāo)記的內(nèi)容是[0-9]所標(biāo)記的

因此這里可以理解成為7替換了digit 7


1533110322051.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吆寨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踩寇,更是在濱河造成了極大的恐慌啄清,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俺孙,死亡現(xiàn)場離奇詭異辣卒,居然都是意外死亡掷贾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門荣茫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來想帅,“玉大人,你說我怎么就攤上這事啡莉「圩迹” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵票罐,是天一觀的道長叉趣。 經(jīng)常有香客問我,道長该押,這世上最難降的妖魔是什么疗杉? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蚕礼,結(jié)果婚禮上烟具,老公的妹妹穿的比我還像新娘。我一直安慰自己奠蹬,他們只是感情好朝聋,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囤躁,像睡著了一般冀痕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狸演,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天言蛇,我揣著相機(jī)與錄音,去河邊找鬼宵距。 笑死腊尚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的满哪。 我是一名探鬼主播婿斥,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哨鸭!你這毒婦竟也來了民宿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤像鸡,失蹤者是張志新(化名)和其女友劉穎勘高,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡华望,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仅乓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖舟。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夸楣,靈堂內(nèi)的尸體忽然破棺而出宾抓,到底是詐尸還是另有隱情,我是刑警寧澤豫喧,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布石洗,位于F島的核電站,受9級特大地震影響紧显,放射性物質(zhì)發(fā)生泄漏讲衫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一孵班、第九天 我趴在偏房一處隱蔽的房頂上張望涉兽。 院中可真熱鬧,春花似錦篙程、人聲如沸枷畏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拥诡。三九已至,卻和暖如春氮发,著一層夾襖步出監(jiān)牢的瞬間渴肉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工折柠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留宾娜,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓扇售,卻偏偏與公主長得像前塔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子承冰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 一华弓、前言 我們都知道,在Linux中一切皆文件困乒,比如配置文件寂屏,日志文件,啟動文件等等。如果我們相對這些文件進(jìn)行一些...
    以七v為書閱讀 1,502評論 0 5
  • 簡介 sed 是一種在線編輯器迁霎,它一次處理一行內(nèi)容吱抚。處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中考廉,稱為“模式空間”(p...
    699b979fc4da閱讀 988評論 0 1
  • 原文鏈接:sed命令_Linux sed 命令用法詳解:功能強(qiáng)大的流式文本編輯器 http://man.linu...
    e2ae5d4bd7c1閱讀 786評論 0 1
  • 本文承接之前寫的三十分鐘學(xué)會AWK一文秘豹,在學(xué)習(xí)完AWK之后,趁熱打鐵又學(xué)習(xí)了一下SED昌粤,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,382評論 3 74
  • 一既绕、命令行工具CLI的安裝與使用 (詳情參考LeanCloud官方文檔) 安裝 2.登錄與啟動 二、LeanClo...
    _Wake閱讀 2,486評論 0 3