聽語音html
分步閱讀linux
主要介紹下linux中sed命令的一些應用,sed主要用來對文件進行一些處理,好比打印,追加,刪除,替換等,我這邊只對使用率比較高的一些參數進行介紹正則表達式
首先我這邊先建一個字母大小轉換的腳本test2.sh,內容以下:spa
先介紹些sed -n的應用:htm
sed命令中p能實現打印匹配行的功能。咱們能夠實際看下sed命令帶-n和不帶-n狀況下有什麼不一樣。blog
sed -n "1p" test2.sh:帶-n選項的話,只打印test2.sh腳本第一行匹配行。ci
sed "1p" test2.sh:不帶-n的話,不只打印第一行匹配行,還打印輸出test2.sh腳本的所有內容。rem
sed -n還能夠打印文件的範圍,好比打印test2.sh腳本的前兩行,咱們就能夠執行如下命令:sed -n "1,2p" test2.sh,就能夠直接打印前兩行。get
sed命令能夠打印匹配模式行,好比打印test2.sh腳本匹配tr的行,就能夠執行如下命令:it
sed -n /tr/p test2.sh。
remark:若是不帶-n的話,除了打印匹配行外,還會打印腳本的所有內容。
sed -e的應用。只有當sed命令傳遞多個編輯命令式,纔會使用到-e。好比:我想打印/tr/匹配行,而且打印匹配行所在的行號,此時存在多個sed參數,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每一個參數前都要帶上-e:
sed a\追加命令,命令格式爲:sed ’指定地址a\追加內容‘ 目標文件
這個追加內容在匹配行的下一行,只會輸出到標準輸出,原文件內容是不變的,例如在test2.sh腳本的/tr/所在的匹配行的下一行添加「#hello」內容,可須要執行:
sed '/tr/a\#hello' test2.sh
必定不要忘記單引號.
還有一個sed i\的追加命令,命令格式爲:sed ’指定地址i\追加內容‘ 目標文件,跟a\不一樣,i\追加是在指定位置的上一行追加命令
sed命令中還有一些特殊的匹配,好比元字符匹配,此時須要用轉義符"\"屏蔽其特殊意義。
好比:sed -n ‘/\=/p’test2.sh,則打印輸出tr一行。
$在正則表達式中表示尾行,執行sed -n ‘$p’ test2.sh則打印腳本尾行。
!表示取反,能夠看如下兩個例子
sed中可使用關鍵字來匹配行,打印咱們所須要的內容,好比,我但願打印test2.sh第2,3行,能夠執行:sed -n "2,3P" test2.sh,也能夠執行sed -n "/tr/,/exit/p" test2.sh
sed c\的應用,命令格式爲:sed ’指定地址c\替換內容‘ 目標文件。好比,#hello,替換test2.sh腳本的tr這行,能夠執行命令:sed '/tr/c\#hello' test2.sh
sed刪除d應用:好比我想刪除test2.sh的第2行,能夠執行如下命令:sed "2d" test2.sh或者sed /tr/d test2.sh
sed替換s應用:格式 sed s/被替換的字符/替換字符/[替換選項]
好比,我想把test2.sh中tr替換成大寫的tr,則能夠執行如下命令:sed ‘s/tr/TR/’test2.sh,則把腳本中的tr替換成TR,完後輸出所有內容。
若是僅想打印替換所在行,則須要試用使用-n和-p:sed -n ‘s/tr/TR/p’ test2.sh:把腳本中的tr替換成TR,而後打印tr所在的行.
若是腳本中存在好幾個tr,而且每一行也存在多個tr,若是執行以上命令的話,只會更改每一行的第一個出現的tr,若是要所有把tr轉後爲TR,則須要添加G參數:
sed -n ’S/tr/TR/pg’test2.sh。
w參數是定向輸入參數,好比要把上述的變動定向輸出到test1.txt中,則須要執行:
sed -n ’s/tr/TR/pgw test1.txt’ test2.sh。
也能夠直接把選定的匹配內容寫到另外一個文本中,好比想把test2.sh中tr這同樣寫到test2.txt中,執行:sed -n ’/tr/w test2.txt‘ test2.sh