Linux命令之sed命令使用介紹

sed是linux輕量級流編輯器,用于行的操作,主要用來數(shù)據(jù)的選取、替換、刪除、新增等。從輸入文件中一次一行的讀取,
按順序?qū)⒘斜碇械拿顟玫矫恳恍?,并將其編輯過的行,寫到標準輸出。
權(quán) 限:所有用戶
位 置:/bin/sed
用 法:sed [-nefr] [動作] file
參數(shù):
-n
不加-n的時候,sed處理的數(shù)據(jù)和不處理的都會輸出,加上-n只會輸出sed操作的行,
注意:與動作p和起來用,不要與其他動作一起用
-e
直接在命令行模式上進行sed的動作編輯
例如:sed -e 's/aaa/b/g; s/aa/b/g' file 也即多個動作同時操作,注意中間的分號
-f
直接將sed動作寫在一個文件內(nèi),-f file 則可以執(zhí)行filename內(nèi)的sed動作
-r
sed的動作支持擴展的正則表達式(默認支持基礎正則表達式)
-i
直接修改讀取的文件內(nèi)容
注意:多個選項參數(shù)一起用的時候,例如:sed -i -r ... 不可以這樣:sed -ir ...
動作說明:[n1[,n2]] function
不見得會存在,一般代表選擇動作的行數(shù),如果動作是在5到15行之間進行替換,則"10,20c"
a 新增,當前行的下一行
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 插入,當前行的上一行
與a動作類似,參照a動作用法
p 打印
sed -n '2,5p' file 打印file的第2至5行
s 替換
sed 's/oldString/newString/g' file oldString和newString支持基礎正則表達式和擴展的正則表達式
cat -n nginx | sed '1,99s/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}//g' 把nginx日志的1至99行的第一個字段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,-,-,-,-,-,-,-
動作其他用法1:sed '/模式/動作' 文件
可以指定某種模式的行進行動作操作,如下(這里的文件名是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、等價與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
動作其他用法2:
也可以使用成對的正則表達式或行號與正則表達式的結(jié)合,來選取一定范圍的行,如下:
1、sed '1,3d' file 刪除1至3行
2、sed -n '1,3p' file 打印1至3行
3、sed '1, /^$/d' file 刪除范圍:第一行至第一個空行 (注意格式)
4、sed '/^$/, /^app/d' file 刪除范圍:第一個空行至以app開頭的行
5、sed '$d' file 刪除最后一行
注意:反向匹配行,是動作前加感嘆號 (!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)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細信息? 3招輕松查看CPU型號、核心數(shù)和溫度
在日常運維工作中,獲取 CPU 信息是系統(tǒng)運維管理員常見的工作內(nèi)容,無論是為了性能調(diào)優(yōu)、硬件升級還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個win11裝機u盤,詳細如下2025-02-17Rsnapshot怎么用? 基于Rsync的強大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠程文件,接下來詳細介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時、每天、每周和每月的本地備份,以及如何進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)核在運行時表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預覽版發(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)化和改進,進一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細安裝指南2025-01-16