1. 程式人生 > >Linux中sed工具的使用

Linux中sed工具的使用

目錄

Sed

定界符 /

插入 

Sed

sed是一種流編輯器,它是文字處理中非常重要的工具,能夠完美的配合正則表示式使用,功能不同凡響。 處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。

sed命令不對原檔案進行改變,除非使用 -i 引數

sed命令的使用

sed  引數   命令    檔案

  • -f     指令碼檔案   以選項中指定的指令碼檔案來處理輸入的文字檔案
  • -n    僅顯示處理後的結果
  • a\    在當前行下面插入文字
  • i\     在當前行上面插入文字
  • d     刪除選擇的行
  • s    替換指定字元
  • n   讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令
  • p    列印模板塊的行
  • r  file    從file中讀行
  • i   修改原檔案內容

-n選項和p命令一起使用表示只打印那些發生替換的行: sed  -n  's/root/ROOT/p'  /etc/passwd

g 命令會替換每一行中的所有匹配:sed  's/root/ROOT/g'  /etc/passwd

當需要從第N處匹配開始替換時,可以使用Ng :   sed  's/root/ROOT/2g'  /etc/passwd

定界符 /

在sed中使用 / 作為定界符,也可以使用任意的定界符,如:

  • sed  's:root:ROOT:g'
  • sed  's|root|ROOT|g'

當定界符出現在樣式內部時,需要對其進行轉義:sed 's/\/bin\/bash/\/root\/xie/'  /etc/passwd   ,將/etc/passwd中的 /bin/bash 替換為 /root/xie

刪除操作: d

  • 刪除空白行:  sed  '/^$/d'   test
  • 刪除檔案的第2行: sed '2d' test
  • 刪除檔案的第2行到末尾所有的行:sed '2,$d'  test
  • 刪除檔案最後一行: sed  '$d'   test
  • 刪除檔案中所有開頭是root的行: sed  '/^test/d'  test

多點編輯:-e

-e 選項允許在同一行裡執行多條命令

sed -e '1,5d'  -e  's/root/ROOT/g'  /etc/passwd            先刪除檔案中的1-5行,然後將剩餘的行中所有的root替換為ROOT

從檔案讀入: r 命令

file裡的內容被讀進來,顯示在與test匹配的行後面,如果匹配多行,則file的內容將顯示在所有匹配行的下面:

sed '/test/r file' filename

寫入檔案: w 命令

在example中所有包含test的行都被寫入file裡: sed -n '/test/w file' example

插入 

插入(行下)  a\

將 this is a test line 追加到 以test 開頭的行後面: sed '/^test/a\this is a test line' file

在 test.conf 檔案第2行之後插入 this is a test line: sed -i '2a\this is a test line' test.conf

插入(行上)  i\

將 this is a test line 追加到以test開頭的行前面: sed '/^test/i\this is a test line' file

在test.conf檔案第5行之前插入this is a test line: sed -i '5i\this is a test line' test.conf