1 :處理文本的工具sed 正則表達式
sed 自己就是一個自動打印工具編輯器
Stream EDitor, 行編輯器 sed 批量改文件 ide
語法 sed 【 選項】 【sed本身的腳本】 【 input 文件】.....、工具
sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲「模式空間」(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。而後讀入下行,執行下一個循環。若是沒有使諸如‘D’的特殊命令,那會在兩個循環之間清空模式空間,但不會清空保留空間。這樣不斷重複,直到文件末尾。文件內容並無改變,除非你使用重定向存儲輸出。spa
功能:主要用來自動編輯一個或多個文件,簡化對文件的反覆操做,編寫轉換程序等3d
參考: http://www.gnu.org/software/sed/manual/sed.ht ip
2 :sed工具input
用法:sed [option]... 'script' inputfile...it
經常使用選項:io
-n:不輸出模式空間內容到屏幕,即不自動打印,至關於把默認打印關閉啦
-e: 多點編輯
-f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
-r: 支持使用擴展正則表達式
-i.bak: 備份文件並原處編輯
-i 直接刪除
.bak 在刪除以前備份
script:(腳本) sed 後面跟的腳本需加單引號 腳本里是地址和命令
'地址命令‘
3:sed工具
地址定界:
(1) 不給地址:對全文進行處理
(2) 單地址: sed -n ’2p‘ 打印第二行 sed -n '$p' 打印最後一行
#: 指定的行,$:最後一行
/pattern/:被此處模式所可以匹配到的每一行
(3) 地址範圍:#,# sed -n '1,3p' 打印第一行到第三行
#,+# sed -n ‘1,+3p’ 第一行日後的三行,包括第一行
/pat1/,/pat2/ sed -n ‘/^s/,/^f/p’ etc 在etc裏找到以s開頭以f結尾的行找到並打印出來 注語法需按照這個來寫,不然無效
#,/pat1/ sed -n ‘3,/^f/p’ etc 在etc文件下從第3行開始打印並以f結尾的行結束
sed -n ‘2,20d;p’ 刪除2到20行,別的行在打印出來
(4) ~:步進
1~2 奇數行 cat -n /etc/passwd | sed -n ‘1~2p' 每隔兩行開始打印 cat -n 給每行標上數字
2~2 偶數行
4: sed工具
編輯命令: sed '2d' /etc 刪除etc下的第二行
d: 刪除模式空間匹配的行,並當即啓用下一輪循環
p:打印當前模式空間內容,追加到默認輸出以後
a [\]text:在指定行後面追加文本支持使用 a:追加
sed '1,20ahahh’ 在1到20中間追加字符hahh 如要用空個隔開需在a後加\
\n實現多行追加
i [\]text:在行前面插入文本
sed ‘\yao\a hhhh’ f1 可在f1文件裏的yao下一行追加文件
c [\]text:替換行爲單行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
表示將/etc/fstab 中以UUID開頭的文本打印到f1中 且sed後加正則必須加‘/ /‘
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行後=: 爲模式空間中的行打印行號!:模式空間中匹配行取反處理
在/etc/fstab/目錄裏以UUID開頭的行後追加啦/etc/issue裏的文件內容
=: 打印行號 /正則表達式 /
! 取反 除UID以外別的行都寫行號
在etc下除啦第三行別的都打印 ! 也能夠用sed ’3d‘刪除它
sed工具
s///:查找替換,支持使用其它分隔符,s@@@,s###
把root替換成大寫的root
替換標記:
g: 行內全局替換
把passwd下全部小寫root替換成大寫 但它並無改文件,若是要改+ -i能夠實現, /支持正則表達式/支持分組
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中