sed是Stream Editor(字符流編輯器)的縮寫,是一個流編輯器,sed是操作、過濾和轉換文本內容的強大工具,可以對文件實現快速增刪改查。
sed的工作模式及特性:
每次從源文件中讀取一行,然后放到sed所用到的內存緩沖空間當中(sed模式空間),編輯完后,然后把模式空間中內容,無論是否被編輯,最終的結果都輸出到屏幕上
注意:默認情況,sed不修改源文件內容
工作特性:
1)默認不修改源文件,如果要直接修改源文件,只用-i
2)sed有模式空間和保持空間,默認打印模式空間的內容到標準輸出
3)支持正則表達式
4) sed流編輯器,每一次讀取一行文本到內存中
語法格式:
sed [選項] [sed內置命令字符] [輸入文件]
常用選項:
-n 取消默認的sed輸出,常與sed內置命令的p結合
-i 直接修改文件內容
-e 多點編輯
-f 腳本文件,從指定文件中讀取編輯腳本(每行一個)
-r 使用擴展正則表達式
地址定界:
1)單地址
#: 指定的行
/pattern/ 被模式匹配到的每一行
2)地址范圍
#,# 從第幾行到第幾行
#,+# 從第幾行開始,往下幾行
/pattern/,/pattern2/
常用的編輯命令:
d: 刪除匹配到的文本
p: 打印當前模式空間
a \: 追加文本,在指定的行后添加一行或多行文本
i \: 插入文本,在指定的行前添加一行或多行文本
c \: 把符合條件的行替換為單行或多行文本
w File : 把符合條件的行,另存為另外一個文件
s/regexp/replacement/ 用replacement替換regexp的內容,regexp可以使用正則表達式,在replacement部分可以使用特殊字符&或\1-\9
g 全局替換
sed內置命令N的作用:不會清空模式空間的內容,并且從輸入文件中讀取下一行數據,追加到模式空間中,兩行數據以換行符\n連接。(追加匹配到行的下一行)
范例1:
[root@fenfa tmp]# sed -n '/^UUID/p' fstab
UUID=0fbbf910-5c9e-463e-8140-488d5588f2f5 /boot ext4 defaults 1 2
[root@fenfa tmp]# sed '/^UUID/a \# hello world' fstab (追加文本)
#
# /etc/fstab
# Created by anaconda on Mon Aug 14 11:25:01 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_fenfa-lv_root / ext4 defaults 1 1
UUID=0fbbf910-5c9e-463e-8140-488d5588f2f5 /boot ext4 defaults 1 2
# hello world
[root@fenfa tmp]# echo '/etc/sysconfig/network-scripts/ifcfg-eth0/' |sed 's@[^/]\+/\?$@@'
/etc/sysconfig/network-scripts/
范例2:
1、 刪除匹配到行的下一行
sed -n '/^UUID/{n;d}' /etc/fstab
2、
[root@fenfa tmp]# vim file
You have mail in /var/spool/mail/root
[root@fenfa tmp]# sed 'N;s/\n/\t/' file
aaa bbb
ccc ddd
eee fff
ggg hhh
iii mmm
3)將yes替換成no
[root@fenfa tmp]# sed -i '/disable/s#yes#no#' /etc/xinetd.d/rsync
4)[root@fenfa tmp]# echo '1234567'|sed ':a; s/\B[0-9]\{3\}\>/,&/;ta'
1,234,567
- 第一章:文件和目錄操作類命令
- 第一節:pwd命令
- 第二節:cd命令
- 第三節:mkdir命令
- 第四節:touch命令
- 第五節:ls命令
- 第六節:cp命令
- 第八節: mv命令
- 第九節:ln命令
- 第十節:find命令
- 第十一節:chattr命令
- 第十二節:chown命令
- 第十三節:chmod命令
- 第二章:文件過濾和內容編輯類命令
- 第一節: cat命令
- 第二節:less命令
- 第三節:head命令
- 第四節:tail命令
- 第五節:cut命令
- 第六節:sort命令
- 第七節:wc命令
- 第八節:tr命令
- 第三章:文本處理三劍客
- 第一節:grep命令
- 第二節:sed命令
- 第四章:linux信息顯示類或搜索命令
- 第一節:uname命令
- 第二節:du命令
- 第三節:data命令
- 第四節:echo命令
- 第五節:watch命令
- 第五章: 文件備份和壓縮類命令
- 第一節:tar命令
- 第二節:gzip壓縮
- 第三節:zip和upzip命令
- 第四節:scp命令
- 第五節: rsync文件同步工具命令
- 第六章:Linux用戶管理及用戶信息查詢類命令
- 第一節:useradd命令
- 第二節:usermod命令
- 第三節:userdel命令
- 第四節:groupadd和groupdel命令
- 第五節:passwd命令
- 第六節:su命令
- 第七節:visudo命令
- 第八節:id命令
- 第九節:w和who命令
- 第十節:last和lastb命令
- 第七章: Linux磁盤及文件系統管理
- 第一節:fdisk命令
- 第二節: partprobe命令
- 第三節:parted磁盤分區工具
- 第四節:mkfs命令
- 第五節:dumpe2fs命令
- 第六節: fsck命令
- 第七節:mount和umount命令
- 第八節:dd命令
- 第九節:df命令