總的來說就是sed是unix類os下的文本操作工具,負責解析和轉換文本
sed
awk
逐行處理,支持模式匹配(regex)
默認不處理源文件,僅對模式空間中的進行處理
處理結束後將模式空間中的結果輸出到屏幕
sed [option] 'AddressCommond' file
StartLine,endLine
比如1,100,表示1-100行
特別注意的是,可以使用$:最後一行
/RegExp/(正則表達式)
比如: /^root/,表示以root開始的行
/pattern1/,/pattern2/第一次被pattern1匹配到的行開始到被pattern2匹配到的行結束
LineNumber指定某行
startLine, +N從startLine開始向後的N行,總共是N+1行
d:刪除符合條件的行
p:顯示符合條件的行
a \string:在匹配的行後追加新行,內容是string
i \string:在匹配的行前追加新行,內容是string
r FILE:將指定的文件的內容添加到匹配的行之後
w FILE:將指定范圍內的內容另存到指定的文件中
s /pattern/ReplaceString/修飾符:將符合模式的字符串替換為ReplaceString(默認只替換每行中第一次被模式匹配到的串)
可以使用三個相同的字符來代替’/’,上面的字符串替換等價於s #pattern#ReplaceString#修飾符
特別的可以使用&:表示整個模式匹配到的字符串
g:全局替換
i:匹配時忽略大小寫
-n:靜默模式,不顯示模式空間中的內容
-r:使用擴展的正則表達式
-i:直接修改源文件(危險慎重使用)
-e 處理 -e 處理:連續進行sed的處理
-f:指定處理腳本另外可以使用類似
sed -f SCRIPTFILE file(將SCRIPTFILE中的每個命令作用在file上)
sed ‘/^\//a #hello world\n#hello,linux’ /etc/fstab (在/etc/fstab中以/開頭的行後一行追加”#hello world\n#hello,linux”) (其中\n會換行)
sed ‘2r /etc/issue’ /etc/fstab (在/etc/fstab中的第二行之後追加/etc/issue文件中的內容)
sed ‘/oot/w /tmp/oot.txt’ /etc/fstab (將/etc/fstab文件中的包含oot的行的內容另存到/tmp/oot.txt)
sed ‘s#1..e#&r#g’ sed.txt (將sed.txt中的符合l..e模式的字符串全部在後面加上”r”)
sed ‘s#(1..e)#\1r#g’ sed.txt (將sed.txt中的符合l..e模式的字符串全部在後面加上”r”)
sed ‘s#l(..e)#L\1#g’ sed.txt (將sed.txt中的符合l..e模式的字符串的小寫的”l”換成大寫的”L”)