sed:
成都創(chuàng)新互聯(lián)公司專業(yè)提供服務(wù)器托管德陽服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買服務(wù)器托管德陽服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。工作方式:此命令也是針對(duì)文檔行的一個(gè)命令。他的工作方式同grep一樣,工作目標(biāo)是文檔中的行,一樣是把文檔復(fù)制到他的內(nèi)存中進(jìn)行操作,只要用戶不保存,就不會(huì)改變?cè)募?/p>
磁盤源文件=A地-->復(fù)制到內(nèi)存中的源文件或部分原文件=B地--->操作、篩選或者編輯后的保存在內(nèi)存中的文件=C地
常用選項(xiàng):
-n:表示不再輸出不符合從B地道C地的內(nèi)容
-e:可以同時(shí)使用多個(gè)編輯指令對(duì)B地的內(nèi)容進(jìn)行編輯、篩選、造作
-f: 后邊可以跟一個(gè)腳本文件,此腳本文件每行都是一個(gè)編輯命令
-r: 支持使用擴(kuò)展正則表達(dá)式
-i : 表示直接對(duì)原文件進(jìn)行編輯,此選項(xiàng)比較危險(xiǎn)哦
地址定界:及表示我們要對(duì)那些行進(jìn)行編輯
1): 不給地址,即空地址。 則表示對(duì)全文進(jìn)行處理
2):?jiǎn)蔚刂?/p>
#:制定行
3): 一個(gè)范圍
#,#:
#。+#:
/pat1/,/part2/
4) 步進(jìn):-
1-2:表示所有的奇數(shù)行
2-2:表示所有的偶數(shù)行
sed 常用編輯選項(xiàng)
d : 刪除 即刪除“B地”的內(nèi)容
sed '1,5d' /etc/fstab 表示刪除1行和5行的內(nèi)容
sed '/^UUID/d' /etc/fstab 表示刪除以UUID開頭的每一行
sed '3d' /etc/fstab 表示刪除第三行
sed '1-2d' /etc/fstab 表示顯示偶數(shù)行(因?yàn)槠鏀?shù)行被刪除了)
p:表示顯示“B地”的內(nèi)容
sed '1~2p' /etc/fstab 表示奇數(shù)行顯示兩遍
sed -n '1~2p' /etc/fstab 表示只顯示奇數(shù)行 -n的意思是只保留編輯的行為
a\text:指定的模式匹配到的行的后邊追加“text",支持使用\n這個(gè)符號(hào),實(shí)現(xiàn)多行追加
i\text:在指定的模式匹配到的行前邊插入"text",支持使用\n這個(gè)符號(hào),實(shí)現(xiàn)多行追加
例如: sed '5i \do it yourself' /etc/fstab (我把fstab第一行的空格刪除了所以是下邊的效果)
# # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # do it yourself # 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
sed '5a \do it yourself' /etc/fstab
# # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' do it yourself # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
如果想在多行下邊或者上邊插入信息,可以用下操作
sed '/UUID/a \#I will do my best.' /etc/fstab
# # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # 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 # UUID=42725ac6-787d-4be4-a766-a4b9325eba7e / ext4 defaults 1 1 #I will do my best. UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot ext4 defaults 1 2 #I will do my best. UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap swap defaults 0 0 #I will do my best.
可以看出/UUID/=5
c \text:把匹配到的行替換為此處指定的文本"text' 注意:是正行替換,不是只替換某個(gè)字符。
例如:
sed '/UUID/c \#I will do my best.' /etc/fstab
# # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # 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 # #I will do my best. #I will do my best. #I will do my best.
w /PATH/TO/FILE: 把挑選出來的行保存到一個(gè)路徑下,例如“把不是#號(hào)開頭的行保存到/tmp/temp里去
sed -n '/^[^#]/w /tmp/temp/new.xx' /etc/fstab
[root@marco-linux temp]# cd /tmp/temp [root@marco-linux temp]# ls etc files6 new.xx passwd1 passwd2 passwd3 [root@marco-linux temp]# cat new.xx UUID=42725ac6-787d-4be4-a766-a4b9325eba7e / ext4 defaults 1 1 UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot ext4 defaults 1 2 UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
r /PATH/FROM/SOMEFILE: 合并文件用的~! 此選項(xiàng)的意思是把另外一個(gè)文件讀取后存放在sed目標(biāo)文件制定的行處 例如我們把/etc/isssue文件讀取出來放在fstab文件的第三行下邊
sed '3r /etc/issue' /etc/fstab
# # /etc/fstab CentOS release 6.7 (Final) Kernel \r on an \m # Created by anaconda on Wed Dec 30 06:43:45 2015 # # 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 # UUID=42725ac6-787d-4be4-a766-a4b9325eba7e / ext4 defaults 1 1 UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot ext4 defaults 1 2 UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
= :為每一個(gè)能匹配到的行加一個(gè)行號(hào) 使用方法:sed '/^UUID/= ' /etc/fstab
9 UUID=42725ac6-787d-4be4-a766-a4b9325eba7e / ext4 defaults 1 1 10 UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot ext4 defaults 1 2 11 UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap swap defaults 0 0
! : 表示取反 例如”fstab文件中刪除所有以不是#開頭的行。
sed '/^#/!d' /etc/fstab
# # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # 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 #
s///:查找替換,其分隔符可以自行指定,比如s$$$ s@@@@ 等
替換標(biāo)記:
g:全局替換
w: /PATH/TO/IILE : 將替換成功的結(jié)果保存到指定的文件中
p:顯示替換成功的行
例如: sed 's@^[[:space:]]@@' /PATH/TO/FILE 后兩個(gè)@@之間表示為空
sed 就說這些把。。祝你學(xué)習(xí)愉快,也祝我學(xué)習(xí)愉快
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。