手把手教你使用linux下的sed命令(12)

Sed Linux Python 技術 安靜的十年 安靜的十年 2017-10-14

手把手教你使用linux下的sed命令 (12)

大家好,之前發服務的時候,我的閱讀量不是很多,最近幾天發的基礎的東西,我看倒有很多的人喜歡看,額。。關鍵也沒人留言說講什麼。。。我就隨便找一些我覺得比較重要的,和大家說下,再基礎命令裡,很多其實大家都用的很熟悉了,那我今天就和大家說一下sed這個命令吧,畢竟以後的python裡的re正則也和這個很類似的,先說下這個,以後大家也好接受python裡的一些東西。。

好吧,就不廢話了,開始今天的詳細的講解吧。

=============Sed===================================================

Sed:是一款流編輯工具,用來對文本進行過濾與替換工作,特別是當你想對幾十個配置文件進行統一修改時,你會體會到它的魅力;Sed通過一次僅讀取一行內容來對某 些指令進行處理後輸出,所以Sed更適合處理大數據文件;Sed通過文件或管道讀取文件內容,但它默認並不直接修改源文件,而是將讀入的內容複製到緩衝區(模 式空間),然後根據相應的指令對緩衝區中的內容進行處理並輸出結果,默認輸出至標準輸出(即屏幕上);

一:Sed文本過濾工具,針對於行過濾:

(1)sed -n ‘xxp’

    eg: sed -n ‘1p’ 打印第一行

    sed -n ‘1,3p’ 打印1到3行

    sed -n ‘1~2’ 打印奇數行,從第1行開始,每2行匹配一次操作地址

手把手教你使用linux下的sed命令(12)

(2)sed -n ‘/^xxx/p’ 打印以xx開頭

sed -n ‘/xxx$/p’ 打印以xx結尾的行

手把手教你使用linux下的sed命令(12)

(3)sed -e 可以執行相匹配的多個條件

        sed ‘/^a/p;/^[0-9]/p’ ceshi.sh 可以用封號將多個指令隔開

      eg: sed -e ‘/^a/p’ -e ‘/^[0-9]/p’

手把手教你使用linux下的sed命令(12)

(4) sed -n ‘//=’ 顯示所匹配的行

eg: sed -n ‘/^a/=’ ceshi.sh

手把手教你使用linux下的sed命令(12)

(5) sed ‘//a ***’ 向匹配的行後追加內容,a後追加內容

      sed ‘//i ****’ 向匹配的行前添加內容,i後為追加內容

     sed ‘2a chehuiwei’ ceshi.sh 在第二行後追加

      sed ‘3i chehuiwei’ ceshi.sh 在第三行前添加

     sed ‘/ONBOOT/c ONBOOT=yes’ test.txt 將包含相關內容的行的內容更改

手把手教你使用linux下的sed命令(12)

手把手教你使用linux下的sed命令(12)

(6) sed -n ‘1,3!p’ 取反

手把手教你使用linux下的sed命令(12)

(7)sed ‘1,2d’ ceshi.sh 刪除1到2行

   sed ‘/^a/d’ ceshi.sh 刪除以a開頭的行

     sed ‘/^$/d’ ceshi.sh 刪除文件中的空白行

手把手教你使用linux下的sed命令(12)

(8) sed ‘s/舊的內容/替換的新內容/g’ ceshi.sh 替換

    sed -n ‘1,2s/舊的內容/替換的新內容/p’ ceshi.sh 將前兩行打印出來並替換相關內容

    sed ‘s/舊的內容/替換的新內容/n’ ceshi.sh 當一行中有多個要替換的內容時,n指定替換第幾個

    grep -v ^$ ceshi.sh |sed 's/ru[1-3]/\<&\>/1;s/ru[1-3]/\<\/&\>/2' 用&來代替正則表達式匹配的內容

   注意:如果規則表達式或替換字符串中有許多斜槓,則可以在s之後指定一個不同的字符來更改分割符:

    eg: sed -e &lsquo;s:/usr/local:/usr:g&rsquo; ceshi.sh 此時:是替換分隔符,sed會將/usr/local替換成/usr,e可加可不加

手把手教你使用linux下的sed命令(12)

手把手教你使用linux下的sed命令(12)

手把手教你使用linux下的sed命令(12)

(9)sed -i 文件名稱 將更改內容寫入文件

   eg: sed -i &lsquo;s/舊的內容/新的內容/g&rsquo; ceshi.sh

手把手教你使用linux下的sed命令(12)

好吧。今天的講解就到這裡吧。不知道大家學習的怎麼樣了。。。我也知道,我說什麼都留不住你們的評論。。。你們贏了。。。不想沒事聊會,那你們就好好練習吧。

大家明天見。

相關推薦

推薦中...