Linux命令之sed命令使用介紹

sed是linux輕量級(jí)流編輯器,用于行的操作,主要用來數(shù)據(jù)的選取、替換、刪除、新增等。從輸入文件中一次一行的讀取,
按順序?qū)⒘斜碇械拿顟?yīng)用到每一行,并將其編輯過的行,寫到標(biāo)準(zhǔn)輸出。
權(quán) 限:所有用戶
位 置:/bin/sed
用 法:sed [-nefr] [動(dòng)作] file
參數(shù):
-n
不加-n的時(shí)候,sed處理的數(shù)據(jù)和不處理的都會(huì)輸出,加上-n只會(huì)輸出sed操作的行,
注意:與動(dòng)作p和起來用,不要與其他動(dòng)作一起用
-e
直接在命令行模式上進(jìn)行sed的動(dòng)作編輯
例如:sed -e 's/aaa/b/g; s/aa/b/g' file 也即多個(gè)動(dòng)作同時(shí)操作,注意中間的分號(hào)
-f
直接將sed動(dòng)作寫在一個(gè)文件內(nèi),-f file 則可以執(zhí)行filename內(nèi)的sed動(dòng)作
-r
sed的動(dòng)作支持?jǐn)U展的正則表達(dá)式(默認(rèn)支持基礎(chǔ)正則表達(dá)式)
-i
直接修改讀取的文件內(nèi)容
注意:多個(gè)選項(xiàng)參數(shù)一起用的時(shí)候,例如:sed -i -r ... 不可以這樣:sed -ir ...
動(dòng)作說明:[n1[,n2]] function
不見得會(huì)存在,一般代表選擇動(dòng)作的行數(shù),如果動(dòng)作是在5到15行之間進(jìn)行替換,則"10,20c"
a 新增,當(dāng)前行的下一行
sed '2a hello world' file 輸出在第2行之后插入hello world
sed '2a hello world\
my name is csdn' file
輸出在2行下面插入兩行分別為hello world 和my name is scdn
特別注意hello world 后面的"\"
c 替換,是整行替換
sed '3,6c hello csdn' file
輸出把3至6行的只替換為 hello csdn(第3至6行只剩下一行hello csdn,不是3至6行的每一行都為hello csdn)
d 刪除
sed '3,6d' file 輸出刪除file的3至6行之后的內(nèi)容
i 插入,當(dāng)前行的上一行
與a動(dòng)作類似,參照a動(dòng)作用法
p 打印
sed -n '2,5p' file 打印file的第2至5行
s 替換
sed 's/oldString/newString/g' file oldString和newString支持基礎(chǔ)正則表達(dá)式和擴(kuò)展的正則表達(dá)式
cat -n nginx | sed '1,99s/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}//g' 把nginx日志的1至99行的第一個(gè)字段IP地址替換為空
結(jié)果為:
91 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikey&digest=914EBB2FD551844CBE15513C0126E6EE&digest-algorithm=ed2k&hash=9D37BB2988F26973371FAB028FEEEB93D5542300& HTTP/1.1,200 65,-,XMP Windows Client 4.9,-,ed2k://|file|ki141213.wmv|1119747351|914EBB2FD551844CBE15513C0126E6EE|h,00E04C377725NG4E,ki141213.wmv,1119747351 92 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,- 93 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,- 94 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,- 95 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,- 96 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikey&digest=76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE&digest-algorithm=magnet&hash=28003498535& HTTP/1.1,200 65,-,Thunder Windows Client 7.9,-,magnet:?xt=urn:btih:76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE,EC55F9E92A5212LQ,ABP-209R,1067178826 97 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,- 98 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,- 99 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,- 100 121.12.57.154 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
動(dòng)作其他用法1:sed '/模式/動(dòng)作' 文件
可以指定某種模式的行進(jìn)行動(dòng)作操作,如下(這里的文件名是a,注意cat a的輸出):
1、以p開頭的行前加[TAB]
$ cat a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa hello:3:f $ sed '/^p/s/^/\t/' a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa hello:3:f
2、刪除以a開頭的行,(那么下面的輸出,以a開頭的行就沒了)
$ sed '/^a/d' a pa:11:a sa:32:c stort:1:d pear:4:aa hello:3:f3、反向匹配(文件a中,輸出只保留了a開頭的行)
$ sed '/^a/!d' a app:5:b
4、等價(jià)與grep -v (輸出文件a中,非p字母開頭的行)
$ grep -v '^h' a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa $ sed -n '/^h/!p' a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa
動(dòng)作其他用法2:
也可以使用成對(duì)的正則表達(dá)式或行號(hào)與正則表達(dá)式的結(jié)合,來選取一定范圍的行,如下:
1、sed '1,3d' file 刪除1至3行
2、sed -n '1,3p' file 打印1至3行
3、sed '1, /^$/d' file 刪除范圍:第一行至第一個(gè)空行 (注意格式)
4、sed '/^$/, /^app/d' file 刪除范圍:第一個(gè)空行至以app開頭的行
5、sed '$d' file 刪除最后一行
注意:反向匹配行,是動(dòng)作前加感嘆號(hào) (!d !s !c等等)
如果前面的命令直接加入-i,則直接修改文件
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見的工作內(nèi)容,無論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤,詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠(yuǎn)程文件,接下來詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡化內(nèi)核搶占邏輯,通過減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細(xì)安裝指南2025-01-16