Shell四劍客Sed

Sed

概述:
sed是一個非交互的文本編輯器,可對文本文件和標(biāo)準(zhǔn)輸入進行編輯牡彻,哄酝,可以編輯一個或者多個文件,簡化對問價你的反復(fù)操作瘟裸,編寫轉(zhuǎn)換程序等
原理:
在處理文本時把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,成為“模式空間”然后用sed命令處理緩沖區(qū)的內(nèi)容诵竭,
處理完成后吧緩沖的內(nèi)容輸出到屏幕或者寫入文件
格式:

sed 【參數(shù)】 【命令】 文件名

注意:sed 工具處理文本话告,文本內(nèi)容輸出屏幕已經(jīng)修改,但是文件內(nèi)容其實并沒有修改卵慰,需要加-i參數(shù)對文件徹底修改

sed 常用參數(shù)

-i : 讓處理生效
-n:只顯示匹配到的行
-e:擴展參數(shù)(兩個多個命令都執(zhí)行沙郭,每一個之間用-e隔開)

sed常用命令

s:字符串查找(常用作替換)
d:刪除
p:打印
i:在匹配的行之前添加
a:在匹配的行之后添加
N:合并模式(sed 'N;命令')可實現(xiàn)多行換成一行

例:用sed修改1.txt中的1 替換成2地址:

sed -i  "s/1/2/g"  1.txt

s 表示替換,后面的第一個/ 表示查找后面的字符 第二個/ 表示替換成 后面那個字符 第三個/ 代表結(jié)束裳朋,g 是全局替換 -i 是把模式空間的修改寫入到文件(讓修改生效) 單引號里不支持變量病线,所以盡量用雙引號

例2:一條命令把daemon替換成qq ,adm 替換成baidu

[root@server-1 sed]# cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

兩種方法:(1-5行就是1,5s/)

sed "s/daemon/qq/g;s/adm/baidu/g" passwd
sed -e "s/daemon/qq/g" -e "s/adm/baidu/g" passwd

例3:從第一行匹配到adm這行 ,并打印

sed -n "1,/adm/p" passwd 

例4:在adm這行后面加*************(a命令是在匹配項后加***送挑;i命令是在匹配項前加)
sed "/adm/a********" passwd

[root@server-1 sed]# sed  "/adm/a********" passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
********
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

例5:分別刪除最后一行和2,3行(d是刪除夜矗,要搭配單引號使用)

 sed  '$d' passwd
 sed  '2,3d' passwd

例6:number文件中的數(shù)字如何找出最大數(shù)和最小數(shù) 分別打印下來(sort -r 從大到小排列,-n 默認(rèn)從小到打排列)

[root@server-1 sed]# cat number.txt 
1 2323
1212 1111111
232323 563937937434
343083 9 4 8394838493843
230283 0293 3032 930923 2039 20932903
[root@server-1 sed]# sed  's/ /\n/g' number.txt|sort -nr|sed -n '1p;$p'
8394838493843
1

例7:打印nginx主配置文件中,有效內(nèi)容并顯示行號(不顯示注釋和空白行)
用grep 實現(xiàn)(取反-v)

grep -v "#" /etc/nginx/nginx.conf|grep -nv "^$"

用sed實現(xiàn)(d 刪除)

sed "/#/d;/^$/d" /etc/nginx/nginx.conf
image.png

例8:在root開頭的行加1. (先找到/root/在s替換让虐,在它的開頭^,替換成1.&罢荡,全局其中&代表開頭的root)這是只替換root開頭的行 而不是所有root關(guān)鍵字都換

[root@server-1 sed]# sed "/root/s/^/1.&/g" passwd 
1.root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

例9:打印第一行和最后一行

sed  -n '1p;$p' old.txt 

例10:查找w字母為結(jié)尾的赡突,并在其行尾加word(&表示添加)

[root@server-1 sed]# sed  's/w$/&word/g' old.txt 
newword
2
3
4
10

還可以用

sed  '/w$/s/$/&word/g' old.txt 查找w結(jié)尾的行、替換区赵,$結(jié)尾表示惭缰,添加word(&表示添加)

例11:查找sellinux策略enforcing為disabled,查找selinux行笼才,將其行enforcing改成disabled漱受,!s表示不包括selinux行
sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
sed -i "/SELINUX/骡送!s/enforcing/disabled/g" /etc/selinux/config

例12:passwd文件中每行后丟加入一行空行昂羡;兩行空行 ;前三行后插入空行(G是高級用法摔踱,G表示插入空行)

sed '/^$/d;G' passwd
sed '/^$/d;G;G' passwd
sed '/^$/d;1,3G' passwd

例13:將passwd文件 偶數(shù)行刪除虐先; 隔兩行刪除一行

sed 'n; d' passwd
sed 'n;n; d' passwd

例14:刪除passwd文件行前和行尾的任意空格([\t]代表空格)

sed 's/^[\t]*//; s/^[\t]$//' passwd

例15:打印old和new之間的內(nèi)容

sed "/old/,/new/"p passwd

例16,打印nginx訪問日志2020年7月20日9點 到 10點的訪問量

sed -n "/2020:9:00/,/2020:10:00/"p  access_20200720.log|wc -l
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末派敷,一起剝皮案震驚了整個濱河市蛹批,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌篮愉,老刑警劉巖腐芍,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異试躏,居然都是意外死亡猪勇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門冗酿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埠对,“玉大人,你說我怎么就攤上這事裁替∠盥辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵弱判,是天一觀的道長襟沮。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么开伏? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任膀跌,我火速辦了婚禮,結(jié)果婚禮上固灵,老公的妹妹穿的比我還像新娘捅伤。我一直安慰自己,他們只是感情好巫玻,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布丛忆。 她就那樣靜靜地躺著,像睡著了一般仍秤。 火紅的嫁衣襯著肌膚如雪熄诡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天诗力,我揣著相機與錄音凰浮,去河邊找鬼。 笑死苇本,一個胖子當(dāng)著我的面吹牛袜茧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播圈澈,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼惫周,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了康栈?” 一聲冷哼從身側(cè)響起递递,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啥么,沒想到半個月后登舞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡悬荣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年菠秒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯迂。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡践叠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嚼蚀,到底是詐尸還是另有隱情禁灼,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布轿曙,位于F島的核電站弄捕,受9級特大地震影響僻孝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜守谓,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一穿铆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斋荞,春花似錦荞雏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至染服,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叨恨,已是汗流浹背柳刮。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痒钝,地道東北人秉颗。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像送矩,于是被迫代替她去往敵國和親蚕甥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355