sed命令的使用和說明

sed的三種用法
1.shell命令行輸入命令
 格式:sed [選項] ’sed命令‘ 輸入文件

2.將sed命令出入腳本文件後,sed命令調用
格式: sed [選項] -f sed腳本文件 輸入文件

3.將sed命令插入腳本文件後,三種腳本文件可執行,直接執行腳本文件

格式:./sed腳本文件 輸入文件

sed選項
  -n  不顯示所有行到屏幕(標準輸出)
  -e  表示將下一個字符串解析爲sed編輯命令,如果只傳遞一個編輯      命令給sed,-e選項可以省略
  -f  表示正在調用sed腳本文件


sed的兩種定位文本方式
1.使用行號,指定一行,或指定行號範圍
2.使用正則表達式

定位文本
x   x爲指定行號
x,y 指定從x到y的行號範圍
/pattern/   出現包含模式的行
/pattern/pattern/  查詢包含兩個模式的行
/pattern/,x      從x號到與pattern的匹配行之間的行
x,y!       查詢不包括x和y行號的行


sed編輯命令
  p   打印匹配行
  =   打印文件行號
  a\  在定位行號之後追加文本信息
  i\  在定位行號之前插入文本信息
  d   刪除定位行
  c\  用新文本替換相應模式
  r   從另一個文件中讀文件
  w   將文本保存到一個文件
  y   變換字符
  q   第一個模式匹配完成後退出
  l   顯示與八進制ASCII碼等價的控制字符
  {}  在定位行執行的命令組
  n   地區下一個輸入行,用下一個命令處理新的行
  h   將模式緩衝區的內容複製到保持緩衝區
  H   將模式緩衝區的文本追加到保持緩衝區
  x   互換模式緩衝區和保持緩衝區的內容
  g   將保持緩衝區的內容複製到模式緩衝區
  G   將保持緩衝區的內容追加到模式緩衝區


*** 一、文本選項
1.sed命令的-n選項   --不顯示所有行到屏幕(標準輸出)
例子
  sed -n '1p' input  只顯示文本第一行
  sed '1p' input     不止打印第一行,還打印文本的全部內容
 
  sed命令打印範圍行
例子
  sed -n ’3,6p' input  打印文本的3到6行

  打印匹配模式 -n ‘/ca/p' input  打印文本中含有ca的行

2.sed命令的-e選項    --使用多個編輯命令
例子
    sed -n '/ca/=' input      打印含有ca的行號

例子
    sed -n -e '/ca/p' -e '/ca/=' input 打印行有ca的行及行號

 注意:不支持同時帶多個編輯命令的用法
   如 sed -n '/ca/p=' input

3.sed命令的-f選項
  sed ’指定地址a\text' 輸入文件
例子:
    sed '/file:/a\i love you.' input
      在文本input中含有file:的行後面另起一行添加i love you(作爲一行)

腳本執行追加   --在匹配行的後面插入一行內容
   touch zhuijia.sed
   #!/bin/sed -f   #調用sed腳本
    /file:/a\      # a\表示此處換行添加文本
 #所添加的文本內容
   l like you.\    #"\"符號表示換行
   l love you.

 執行腳本
   給執行權限
  ./zhuijia.sed input


+++++++++++++++++++++++++++++++++++++++++++++++

***二、文本定位

1.匹配元字符
  例子
   sed -n '/\./p' input  匹配文本中含有”.“的行

2.使用元字符進行匹配
  例子
   sed -n '$p' input  匹配文本最後一行
   sed -n '/.*bus/p' input  匹配包含bus結尾的任意字符串

3.!符號
  例子
  sed -n '2,10!p' input  匹配不再2到十行的所有行
 
4.使用行號與關鍵字匹配限定行範圍
 例子
 sed -n '/ca/,$p' input 打印與ca的匹配行到最後一行
 sed -n '3,/ca/p' input 打印第三行到ca的匹配行

+++++++++++++++++++++++++++++++++++++++++++

***三、sed編輯命令
 1.插入文本    --在匹配行的前面插入一行內容
   格式:sed '指定地址i\text' 輸入文件
  例子
  sed腳本
  #!/bin/sed -f
   /file:/i\     #i\表示此處換行插入文本
    we insert a new line.  #插入的文本內容
作用:在file:所在的行的上一行插入 we insert a new line.這一      行內容

 2.修改文本   --匹配的文本行用新文本替代
   格式:‘指定地址c\text' 輸入文件
   例子
   #!/bin/sed -f
     /file:/c\       #c\表示此處換行修改文本
    We modify this line    #修改的文本內容
作用:   將file:所在的文本行替換成  We modify this line文本         行

 3.刪除文本   --刪除指定行或指定行範圍
   格式:刪除地址d
   例子
   sed '1d' input  刪除文本的第一行
   sed '$d' input  刪除文本的最後一行
   sed '1,10d' input  刪除文本的1到10行
   sed '/[Cc][Ee]/d'  刪除含有不區分大小寫的關鍵字ce的所有行
  
 4.替換文本
   格式:s/被替換的字符串/新字符串/[替換選項]
    替換選項
    g  表示替換文本中所有出現被替換字符串之處
    p   與-n選項結合,至打印替換行
    w文件名  表示將輸出定向到一個文件

  1>p選項
   命令格式:sed -n 's/被替換的字符串/新字符串/Np' 輸入文件
    沒有-n  顯示替換了字符串後的文本
    沒有p   不顯示任何內容
    都有     只顯示替換了字符串的行
     Np     替換每行的第N次匹配
   例子   
   sed 's/ca/ce/p'    input   將文本中含有ca的行中的第一個ca                              替換成ce,並將替換後的文本顯示
   sed -n 's/ca/ce/' input    將文本中含有ca 的行中的第一個                              ca 替換成ce,不顯示文本
   sed -n 's/ca/ce/p' input   將文本中含有ca的行中第一個ca替                              換成ce,只顯示替換的行
   sed -n 's/ca/ce/2p input   將文本中國含有ca的行中的第二個                              ca替換成ce,只顯示替換的行

  2>g選項
   命令格式:sed -n 's/被替換的字符串/新字符串/g' 輸入文件
     沒有g   只替換每行第一個可以替換的字符串
      有g     替換每行所有可以替換的字符串

    例子
    sed -n 's/ca/ce/g' 將文本中含 有ca的行的所有ca替換成ce,                       只顯示替換的行

   3>w選項
     命令格式:se -n '被替換的字符串/新字符串/w output' input
 
   例子
   sed -n 's/ca/ce/w output' input  將文本中的ca替換成ce,並將結果寫                                     入output文件

  4>文本替換結合&    --將被替換的字符串保存到&中
   例子
    sed  -n '/ca/(&)/p' input  ==sed -n '/ca/(ca)/p'

  5.寫入一個新文件
    命令格式:指定地址 w 文件名
    例子
    sed -n '1,5 w output' input 將文本input中的1到5行寫入到output中
    sed -n '/ca/w output' input 將文本input中匹配ca的行寫入到output中
   
  6.從文件中讀入文本  ---將其他文件中的文本讀入並附加到指定地址之後
    格式:指定地址 r 文件名
    例子
     sed '/ca/r otherfile' input  將otherfile文件中的所有文本插入到                                    input文本中匹配ca的文本行後面


7.退出命令
   格式:指定地址 q
   例子
    sed '5 q' input 打印文本前5行,然後退出
   
    sed -n '/.r.*/p' input 查找”所有的“任意字符後跟r字符再跟0個或多                            個任意字符

     sed -n '/.r.*/q'      查找”第一個“任意字符後跟r字符再跟0個或多                           個任意字符,然後退出查找

8.變換命令
  格式:sed 'y/被變換的字符序列/變換的字符序列/' 輸入文件
   例子:
   sed ‘y/12345/abcde/' input 將文本中的12345一一對應的替換爲abcde
   注意:被變換字符序列和變換字符序列必須等長

9.顯示控制字符
   例子
    sed -n '1,$1' input  顯示文本中的所有控制字符(如:shift,退格鍵等)

10.在等位行執行命令組
  例子
等價命令  sed -n -e '/ca/p' -e '/ca/=' input
         sed -n '/ca/{p;=}' input

      sed '/ca/{s/i/I/g;s/le/99/;}' input 匹配ca的文本行中將所有i替                                      換爲I,匹配行的第一個le替換爲99

+++++++++++++++++++++++++++++++++++++++++++++++++++

***四、高級編輯
 1.處理匹配行的下一行
   例子
   sed '/ca/{n;s/11/99;}' input  將文本中ca的匹配行的下一行中的ll替換                                   爲99

 2.sed緩衝區的處理??????????????????????????
   sed的兩種緩衝區
        模式緩衝區
        保持緩衝區

   例子
   sed -e '/ca/h' -e 'ce/x' -e '$G' input


3.利用分號分隔多個編輯命令
  格式:sed '編輯命令1;編輯命令2;......'輸入文件
  例子
   sed 's/ca/ce; s/csa/ce' input 將文本中ca替換爲ce,csa替換爲ce
   bourne shell命令行中
   sed '
   >s/ca/ce
   >s/csa/ce
   ....
   >$d' input




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章