1.sed是一款字符流編輯工具(行編輯工具) 常用于處理配置文件
按照每行中的字符進(jìn)行處理操作
sed命令作用說明:
1). 擅長對行進(jìn)行操作處理
2). 擅長將文件的內(nèi)容信息進(jìn)行修改調(diào)整/刪除
2.常見指令/參數(shù)
sed命令的指令信息
p? print? ? ? ? 輸出信息
i? insert? ? ? 插入信息,在指定信息前面插入新的信息
a? append? ? ? 附加信息,在指定信息后面附加新的信息
d? delete? ? ? 刪除指定信息
s? substitute? 替換信息 s###g(全局替換)
c? ? ? ? ? ? ? 替換修改指定的一整行信息
sed命令的參數(shù)信息
? ? -n? 取消默認(rèn)輸出
? ? -r? 識別擴(kuò)展正則
? ? -i? 真實(shí)編輯文件(將內(nèi)存中的信息覆蓋到磁盤中)
? ? -e? 識別sed命令多個(gè)操作指令
注意:n和i不能連用 會(huì)把內(nèi)容給清空
3.sed運(yùn)行原理(讀取到內(nèi)存中,默認(rèn)按行處理,每行都會(huì)輸出)
4.增
在文件第一行添加信息: sed '1i信息' 文件路徑
在文件最后一行添加信息: sed '$a信息' 文件路徑
demo: 在有oldboy行的前面添加oldgirl 后面添加olddog信息
sed -e '/oldboy/ioldgril' -e '/oldboy/aoldgog' test.txt
在文件中添加多行信息 sed '$a100\n101'? text.txt? ? ? ? ? ?//利用\n
企業(yè)中編寫配置文件:
IPaddress=10.10.10.1
mask=255.255.255.0
gateway=10.10.10.254
sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名稱
5.刪除
刪除第三行信息 sed '3d' text.txt
刪除文件二到六行的信息 sed '2,6d' text.txt
刪除第三和第六行 sed '3d;6d' text.txt?
刪除文件中帶有oldboy的信息 sed '/oldboy/d' test.txt
問題: 如何利用sed命令取消空行顯示
1.sed -n '/./p' text.txt
2.sed '/^$/d' person.txt
3.sed -n '/^$/!p' person.txt
6.改
sed 's#原內(nèi)容#修改后內(nèi)容#g' 文件信息
sed 's#oldgirl#oldboy#g' test.txt
sed 's#()#\n#g' 文件信息 后項(xiàng)引用前項(xiàng)進(jìn)行替換修改
難點(diǎn):利用sed取出ip地址
ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
補(bǔ)充: 修改文件內(nèi)容直接進(jìn)行自動(dòng)備份
sed -i.bak 's#oldboy#oldold#g' person.txt
補(bǔ)充02: 在真實(shí)替換文件內(nèi)容時(shí)候,一定不能讓n和i參數(shù)同時(shí)出現(xiàn)
? ? [root@oldboyedu ~]# sed -ni 's#Alex#aaaa#gp' person.txt
? ? 103,aaaa,COO
[root@oldboyedu ~]# cat person.txt
? ? 103,aaaa,COO
說明: ni和參數(shù)同時(shí)使用,會(huì)將文件內(nèi)容進(jìn)行清空
批量修改文件的擴(kuò)展名稱 將oldboyxx.txt擴(kuò)展名修改為oldboyxx.jpg
ls oldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g' | bash
批量重命名專業(yè)命令: rename
rename 需要修改的內(nèi)容 改成什么 文件地址
rename txt jpg oldboy.txt
7.查
查詢單行?sed -n '3p' person.txt? ?//不加-n會(huì)輸出所有? ? -n取消默認(rèn)輸出
多行(連續(xù)) sed -n '4,6p' person.txt?
多行不連續(xù) sed -n '3p;6p' person.txt
根據(jù)文件內(nèi)容的信息進(jìn)行查詢
sed -n '/oldboy/p' person.txt
輸出多行內(nèi)容
sed -n '/oldboy/,/Alex/p' person.txt
輸出多行內(nèi)容(不連續(xù))
sed -n '/oldboy/p;/Alex/p' person.txt?
8. 文件中添加內(nèi)容方法:
01. vim/vi
02. cat >>xxx<<EOF .. EOF
03. echo -e "xxx\nxxx"
04. sed 'na/i xxxx\nxxxx\nsxxxx'