操作系統(tǒng)三劍客命令-sed

00. 課程介紹部分

??? 1) sed命令使用方法

01. 課程知識回顧

??? 1)正則符號

?? 基礎(chǔ)正則符號:

?? ^?以什么開頭的信息進行匹配?^oldboy

??? $?以什么結(jié)尾的信息進行匹配?oldboy$

??? ^$表示匹配空行信息

??? .? 匹配任意一個且只有一個字符 grep "."

??? *? 匹配前一個字符連續(xù)出現(xiàn)0次或者多次

??? .* 匹配所有任意信息 類似于通配符*

??? \?將有意義的字符信息,轉(zhuǎn)義成普通字符進行識別?

?? ??-->找出文件中以點結(jié)尾的信息?

?? ??將特殊的擴展正則符號,轉(zhuǎn)換成基礎(chǔ)正則符號

?? ??將沒有意義的字符信息轉(zhuǎn)成有意義的字符

?? ??\n \r \t

?? []匹配多個字符信息,多個字符匹配時,是或者的關(guān)系

?? ??[ok]在文件中找有O的字符信息 找文件中有k的字符信息

?? ??PS:將一個字符串信息,進行拆分成一個一個的字符進行匹配

?? [^]對匹配的字符信息進行排除

?????? [^ok]? 在文件中找有O的字符信息 找文件中有k的字符信息,進行排除不要顯示,顯示其他信息

?????? [^o^k]?? ???

??

?? 擴展正則符號:

?? +?匹配前一個字符連續(xù)出現(xiàn)1次或者多次

?? |?利用豎線可以匹配多個字符串信息

?? ()將多個字符信息匯總成整體,進行過濾

?? ??進行后項引用前項? (oldboy)\1--sed?

??? {} 指定匹配前一個字符連續(xù)出現(xiàn)了多少次?

?????? {n,m}至少連續(xù)n次,最多連續(xù)m次

?????? {n} 匹配只連續(xù)n次的信息

?????? {n,}? 至少連續(xù)n次,最多不限

?????? {,m}? 至少連續(xù)0次,最多m次?

?? ??匹配前一個字符連續(xù)出現(xiàn)0次或者1次

? ? grep命令識別擴展正則: egrep -E

?? sed命令識別擴展正則:? sed -r

?? 學(xué)生問題:

?? 01.文件中有\(zhòng)撬棍信息,如何進行過濾

?? [root@oldboyedu ~]# grep '\\'oldboy_test.txt

??? I \teach \linux.

?? 02.文件中有$符號, 是識別變量, 還是識別普通符號

??? [root@oldboyedu ~]# grep'$oldgirl' oldboy_test.txt

??? $oldgirl

??? [root@oldboyedu ~]# grep"\$oldgirl" oldboy_test.txt

??? $oldgirl

02. sed命令概述說明:

??? sed命令: 字符流編輯工具(行編輯工具)==按照每行中的字符進行處理操作

?? PS:全屏編輯工具vi/vim

?? sed命令作用說明:

?? 1).擅長對行進行操作處理

?? 2).擅長將文件的內(nèi)容信息進行修改調(diào)整/刪除

??? 編寫腳本: 修改文件內(nèi)容信息時

??? 網(wǎng)絡(luò)服務(wù)中的IP地址進行修改:? 50臺主機遷移機房--新機房

??? 第一個步驟: vi ifcfg-eth0

??? 第二個步驟: 重啟網(wǎng)絡(luò)服務(wù)

??? 第三個步驟: 檢查測試??

?

??? 自動修改網(wǎng)卡地址腳本:

?? 第一個步驟: 修改地址

?? sed -i"s#10.0.0.200#10.0.0.201#g" ifcfg-eth0

??

?? 第二個步驟: 重啟網(wǎng)絡(luò)服務(wù)

?? systemctl restart network

??

?? 第三個步驟: 過濾ip

a s eth0 網(wǎng)卡地址信息存儲到一個文件中 共享存儲

???

??? 具體功能作用:

?? 1)文件中添加信息的能力 (增) ok

?? 2)文件中刪除信息的能力 (刪) ok

?? 3)文件中修改信息的能力 (改)

?? 4)文件中查詢信息的能力(查) OK

03. sed命令的語法信息

??? sed [OPTION]...{script-only-if-no-other-script} [input-file]...

??? 命令 參數(shù)??????? 條件+處理= (指令)????????????? 處理文件信息

??? 顯示出文件中有oldboy行的信息

??? sed? -n?????????'/oldboy/p'?????????????????????oldboy.txt??

04. sed命令執(zhí)行原理

??? 參見原理圖


05. sed命令實踐操作:

??? 創(chuàng)建測試環(huán)境:

cat >person.txt<<EOF

101,oldboy,CEO

102,zhaoyao,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

EOF


??? a sed命令查詢信息方法

?? 根據(jù)文件內(nèi)容的行號進行查詢:

?? 測試1: 顯示單行信息

?? [root@oldboyedu ~]# sed -n '3p'person.txt

??? 103,Alex,COO

?? 測試2: 根據(jù)行號信息,輸出多行內(nèi)容(連續(xù))

?? [root@oldboyedu ~]# sed -n '1,3p'person.txt

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

?? 測試3: 根據(jù)行號信息,輸出多行內(nèi)容(不連續(xù))

??? [root@oldboyedu ~]# sed -n'1p;3p' person.txt

??? 101,oldboy,CEO

??? 103,Alex,COO

?

?? 根據(jù)文件內(nèi)容的信息進行查詢:

?? 測試1: 根據(jù)內(nèi)容信息,輸出單行內(nèi)容

?? #將有oldboy行的信息找出來

??? [root@oldboyedu ~]#sed -n '/oldboy/p' person.txt

??? 101,oldboy,CEO

?

??? 測試2: 根據(jù)內(nèi)容信息,輸出多行內(nèi)容(連續(xù))

?? #將有oldboy到alex行的信息都輸出出來

?? [root@oldboyedu ~]# sed -n'/oldboy/,/Alex/p' person.txt

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

?

?? 測試3: 根據(jù)內(nèi)容信息,輸出多行內(nèi)容(不連續(xù))

?? #將有oldboy和alex行的信息都輸出出來

?? [root@oldboyedu ~]# sed -n'/oldboy/p;/Alex/p'person.txt

??? 101,oldboy,CEO

??? 103,Alex,COO

??? 106,oldboy,CIO

?

??? b sed命令添加信息方法

??? 在文件第一行添加信息:

??? 100,oldgirl,UFO

?? [root@oldboyedu ~]# sed? '1i100,oldgirl,UFO'person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

?

??? 在文件最后一行添加信息:

?? [root@oldboyedu ~]# sed? '$a108,oldgirl,UFO' person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

??? 108,oldgirl,UFO

??

?? 測試:

?? 01.在第三行后面添加oldboy.txt信息

?? sed '3aoldboy.txt' person.txt

?? 02.在第二行前面添加oldboy.txt信息

?? sed '2ioldboy.txt' person.txt

?? 03.在有oldboy行的前面添加oldgirl 后面添加olddog信息

?? sed-e'/oldboy/ioldgirl'-e?'/oldboy/aolddog'person.txt

??

?? [root@oldboyedu ~]# sed -e'/oldboy/ioldgirl'-e? '/oldboy/aolddog' person.txt

??? 100,oldgirl,UFO

??? oldgirl

??? 101,oldboy,CEO

??? olddog

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? oldgirl

??? 106,oldboy,CIO

??? olddog

??

?? sed?'$a100\n101' person.txt? 添加多行信息

?? 企業(yè)中編寫配置文件:

?? IPaddress=10.10.10.1

?? mask=255.255.255.0

?? gateway=10.10.10.254

sed'$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254'文件名稱

?

??? c sed命令刪除信息方法

?? 練習(xí):

?? 01.刪除單行信息

?? [root@oldboyedu ~]# #刪除文件中第三行信息

??? [root@oldboyedu ~]# sed '3d'person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

??

?? 02.刪除多行信息

??? [root@oldboyedu ~]# #刪除文件中第二行到第六行內(nèi)容

??? [root@oldboyedu ~]# sed '2,6d'person.txt

??? 100,oldgirl,UFO

??? 106,oldboy,CIO

??

?? 測試:

?? 01.刪除有oldboy信息的行

?? sed '/oldboy/d' person.txt

??

?? 02.刪除第三行和第六行

?? [root@oldboyedu ~]# #刪除文件中第二行到第六行內(nèi)容

??? [root@oldboyedu ~]# sed '2,6d'person.txt

??? 100,oldgirl,UFO

??? 106,oldboy,CIO

???

??? [root@oldboyedu ~]# sed'3d;6d'person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 103,Alex,COO

??? 104,yy,CFO

??? 106,oldboy,CIO

??

?? 問題: 如何利用sed命令取消空行顯示

?? [root@oldboyedu ~]# sed -n '/./p' person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

???

??? [root@oldboyedu ~]# sed '/^$/d' person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

???

??? [root@oldboyedu ~]# sed -n'/^$/!p' person.txt

??? 100,oldgirl,UFO

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

?

?? d sed命令修改信息方法

??

?? sed 's#原有內(nèi)容#修改后內(nèi)容#g' 文件信息?s /a/b/也行

?? [root@oldboyedu ~]# sed's##oldgirl#old#g' person.txt

??? sed: -e expression #1, char 12:unknown option to `s'

??? [root@oldboyedu ~]# sed 's/#oldgirl/old/g' person.txt

??? 100,old,UFO

???

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

???

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

?? sed 's#()#\n#g' 文件信息 后項引用前項進行替換修改

??? 利用sed命令取出IP地址信息:

?? 第一個歷程: 取出有IP地址的行

?? [root@oldboyedu ~]#ip a s eth0|sed -n '3p'

??? inet 10.0.0.200/24 brd 10.0.0.255scope global noprefixroute eth0

?? 第二個歷程: 取出IP地址

?? [root@oldboyedu ~]# ip a s eth0|sed-n '3p'|sed -r 's#^.*net (.*)#\1#g'

??? 10.0.0.200/24 brd 10.0.0.255 scopeglobal noprefixroute eth0

??? [root@oldboyedu ~]# ip a seth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'

??? 10.0.0.200

?

?? sed -r 's#^.*net (.*)#\1#g'|sed -r's#(.*)/24.*#\1#g'? 進行整合

?? ip a s eth0|sed -n '3p'|sed -r's#^.*net (.*)/24.*#\1#g'

??

?? sed -n '3p'|sed -r 's#^.*net(.*)/24.*#\1#g'? 進行整合

??

?? sed -n '3??????????????????????? p'

?? sed -r 's#^.*net (.*)/24.*#\1#g'

?? sed -rn '3s#^.*net(.*)/24.*#\1#gp'?

?? 最終取IP地址方法

?? [root@oldboyedu ~]# ip a s eth0|sed -rn '3s#^.*net

(.*)/24.*#\1#gp'

??? 10.0.0.200

?

??? 補充01: 修改文件內(nèi)容直接進行自動備份?????????? 備份修改前的內(nèi)容

?? [root@oldboyedu ~]# sed -i.bak? 's#oldboy#oldold#g' person.txt

??? [root@oldboyedu ~]# llperson.txt.bak

??? -rw-r--r--. 1 root root 104 Oct10 11:40 person.txt.bak

??? [root@oldboyedu ~]# catperson.txt.bak

??? 100,#oldgirl,UFO

???

??? 101,oldboy,CEO

??? 102,zhaoyao,CTO

??? 103,Alex,COO

???

??? 104,yy,CFO

??? 105,feixue,CIO

??? 106,oldboy,CIO

?

??? 補充02: 在真實替換文件內(nèi)容時候,一定不能讓n和i參數(shù)同時出現(xiàn)

??? [root@oldboyedu ~]# sed -ni's#Alex#aaaa#gp' person.txt

??? 103,aaaa,COO

?? [root@oldboyedu ~]# cat person.txt

??? 103,aaaa,COO

?? 說明: ni和參數(shù)同時使用,會將文件內(nèi)容進行清空

?

?? 測驗替換功能:

?? 創(chuàng)建測試環(huán)境:

?? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy01.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy02.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy03.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy04.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy05.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy06.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy07.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy08.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy09.txt

??? -rw-r--r--. 1 root root????? 0 Oct 10 02:10 oldboy10.txt

?? 批量修改文件的擴展名稱 將oldboyxx.txt擴展名修改為oldboyxx.jpg

??

?? [root@oldboyedu oldboy]# lsoldboy*.txt|sed -r 's#(.*)txt#mv&\1jpg#g'

??? mv oldboy01.txt oldboy01.jpg

??? mv oldboy02.txt oldboy02.jpg

??? mv oldboy03.txt oldboy03.jpg

??? mv oldboy04.txt oldboy04.jpg

??? mv oldboy05.txt oldboy05.jpg

??? mv oldboy06.txt oldboy06.jpg

??? mv oldboy07.txt oldboy07.jpg

??? mv oldboy08.txt oldboy08.jpg

??? mv oldboy09.txt oldboy09.jpg

??? mv oldboy10.txt oldboy10.jpg

??? mv oldboy.txt oldboy.jpg

??? [root@oldboyedu oldboy]# lsoldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g'|bash

??

?? 批量重命名專業(yè)命令: rename

??? rename? .txt???????.jpg????????? ?oldboy*.txt

?? 命令??? 文件名稱需要修改的部分信息??? 修改成什么信息????? 將什么樣的文件進行修改

?? [root@oldboyedu ~]# cat person.txt|sed-i 's#COO#CEO#g'

??? sed: no input files

??? [root@oldboyedu ~]# sed -i's#COO#CEO#g' person.txt

?? 文件中添加內(nèi)容方法:

?? 01.vim/vi

?? 02.cat >xxx<

?? 03.echo -e "xxx\nxxx" ???????????????添加多行信息//n表示換行

?? 04.sed 'na/i xxxx\nxxxx\nsxxxx'???? 添加多行信息/n表示換號

?? 總結(jié): sed命令的指令信息

?? p? print???????輸出信息

?? i? insert??????插入信息,在指定信息前面插入新的信息

?? a? append??????附加信息,在指定信息后面附加新的信息

?? d? delete??????刪除指定信息

?? s? substitute??替換信息 s###g(全局替換)

?? c?????????????? 替換修改指定的一整行信息

?? [root@oldboyedu ~]# sed'2coldboyedu-sz-01' person.txt

??? 103,aaaa,CEO

??? oldboyedu-sz-01

?

??? 總結(jié): sed命令的參數(shù)信息

???-n? 取消默認輸出

???-r? 識別擴展正則

???-i? 真實編輯文件(將內(nèi)存中的信息覆蓋到磁盤中)? 不能-in一起使用

?? -e? 識別sed命令多個操作指令

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沟突,隨后出現(xiàn)的幾起案子洪燥,更是在濱河造成了極大的恐慌,老刑警劉巖名党,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘹朗,死亡現(xiàn)場離奇詭異侥衬,居然都是意外死亡,警方通過查閱死者的電腦和手機血久,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門突照,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氧吐,你說我怎么就攤上這事讹蘑。” “怎么了筑舅?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵座慰,是天一觀的道長。 經(jīng)常有香客問我翠拣,道長版仔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任误墓,我火速辦了婚禮蛮粮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谜慌。我一直安慰自己然想,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布畦娄。 她就那樣靜靜地躺著又沾,像睡著了一般弊仪。 火紅的嫁衣襯著肌膚如雪熙卡。 梳的紋絲不亂的頭發(fā)上杖刷,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音驳癌,去河邊找鬼滑燃。 笑死,一個胖子當著我的面吹牛颓鲜,可吹牛的內(nèi)容都是我干的表窘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甜滨,長吁一口氣:“原來是場噩夢啊……” “哼乐严!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衣摩,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昂验,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后艾扮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體既琴,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年泡嘴,在試婚紗的時候發(fā)現(xiàn)自己被綠了甫恩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡酌予,死狀恐怖磺箕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抛虫,我是刑警寧澤滞磺,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站莱褒,受9級特大地震影響击困,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜广凸,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一阅茶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谅海,春花似錦脸哀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盲镶。三九已至,卻和暖如春蝌诡,著一層夾襖步出監(jiān)牢的瞬間溉贿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工浦旱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宇色,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓颁湖,卻偏偏與公主長得像宣蠕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甥捺,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355