1.sed介紹正則表達式
stream editor,行編輯器編輯器
sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲"模式空間"(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕,而後讀入下行,執行下一個循環。若是沒有諸如‘D’的特殊命令,那會在兩個循環之間清空模式空間,但不會清空保留空間。這樣不斷重複,直到文件末尾。文件內容並無改變,除非使用重定向輸出功能spa
功能:主要用來自動編輯一個或多個文件,簡化對文件的反覆操做,編寫轉換程序等blog
2.sed用法 ip
用法:sed [option]... 'scripts' inputfileinput
經常使用選項it
-n:不輸出模式空間內容到屏幕上,即不自動打印io
-e:多點編輯test
-r:支持使用擴展正則表達式(默認使用基本正則表達式)stream
-f:/PATH/SCRIPT_FILE:從指定文件中讀取編輯腳本
-i.bak:備份文件並原處編輯(先生成一個.bak的備份文件,而後再進行編輯)
scripts
'地址+命令'
地址定界:
(1):不給地址:對全文進行處理
(2):單地址
#:指定的行,$:最後一行
/pattern/:被此處模式所能匹配到的每一行
(3):地址範圍
#,#
#,+#
/par1/,pat2/:
#,/pat1/
(4):步進
1~2:奇數行
2~2:偶數行
編輯命令
d:刪除模式空間匹配的行,並啓用下一輪循環
p:打印當前模式空間內容,追加到默認輸出以後
=:爲模式空間中的行打印行號
!:模式空間中匹配行取反處理
a[\]text:在指定行後面追加文本
支持使用\n實現多行追加
i[\]text:在行前面插入文本
c[\]text:替換行爲單行或多行文本
w /path/somefile:保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中,放到匹配到的行後
s///:查找替換,支持使用其它分隔符,s@@@,s###
替換標記:
g:行內全局替換
p:顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
sed示例:
取ip地址:ifconfig eno16777736|sed -r '2!d;s@.*inet (.*)net.*@\1@'
sed '2p' /etc/passwd
sed -n '2p' /etc/passwd
sed -n '1,4p' /etc/passwd
sed -n '/root/p' /etc/passwd
sed -n '2,/root/p' /etc/passwd
sed -n '/^$/=' file
sed -n -e '/^$/p' -e '/^$/=' file
sed '/root/a\superman' /etc/passwd
sed '/root/i\superman' /etc/passwd
sed '/root/c\superman' /etc/passwd
sed '/^$/d' file
sed '1,10d' file
nl /etc/passwd|sed '2,5d'
nl /etc/passwd|sed '2a\tea'
sed 's/test/mytest/g' sed.txt
sed -n 's/root/&superman/p' /etc/passwd
sed -n 's/root/superman&/p' /etc/passwd
sed -i.bak 's/test/mytest/g' sed.txt
3.sed高級用法