乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SED工具使用總結(jié)--clayboy的博客

       昵稱5437606 2011-01-16


      . 簡介

      不同于一般的交互式編輯器( Vi), SED (Stream Editor)是一個逐行讀入數(shù)據(jù),進行處理后再輸出到標(biāo)準(zhǔn)輸出的非交互式編輯器.

      優(yōu)點是: 流編輯, 方便地從管道(Pipe line)讀入文字, 進行文字自動編輯處理.

      用途包括:

      1). 對文檔進行批量編輯工作: 可以利用SED命令對文件進行刪除,插入,

      修改等編輯. 由于是自動完成的,所以可以對一批文件重復(fù)操作,提高效率.

      2). 對程序中間過程進行編輯處理: 借助管道, 自動處理中間結(jié)果.

      注意: SED只對輸入處理,并在標(biāo)準(zhǔn)輸出上輸出,不改變原有文件內(nèi)容,如果想報存結(jié)果要用重定向命令.

          SED工作基本原理:

            當(dāng) sed 由標(biāo)準(zhǔn)輸入讀入一行資料并放入 pattern space 時 , sed 依照 sed script 的編輯指令逐一對 pattern space 內(nèi)的資料執(zhí)行編輯 , 之後 , 再由 pattern space 內(nèi)的結(jié)果送到標(biāo)準(zhǔn)輸出 , 接著再將下一行資料讀入。如此重執(zhí)行上述動作 , 直至讀完所有資料行為止. 另外,SED還有一hold space可以作為暫時的文本保存區(qū),跟pattern space進行交互.

      . 基本使用

      1. SED命令的格式:

      sed [-n] [-e ‘script’] [-f script_file] file

      -n : no printing, 不輸出, 除非遇到對該行的指定輸出命令(/p).
      如無該參數(shù), 默認(rèn)逐行輸出處理結(jié)果到STDOUT.
      -e :
      后跟sed編輯指令
      -f :
      后跟script file, sed script從一個文件中取得
      file :
      待處理的文件, 被逐行讀出, 處理, 輸出到STDOUT, 本身不變. 可以用重定向的方式輸出為文件.

      2. SED script編輯指令的格式:

      [address [,address]] command [argument]

      address: 行數(shù), 可以有0,1,2個地址參數(shù), 表明命令作用于全部行,
      某一行, 或者是某幾連續(xù)行. 也可以是正則表達(dá)式

      command: 命令, 表明進行的操作

      argument: 該命令對應(yīng)的參數(shù), 只有替換命令(s)可以帶參數(shù)

      3. SED command 種類:

      1). 處理整行的command:

      Command

       

      功能

       

      地址參數(shù)

      可能個數(shù)

       

      說明

       

      d

       

      刪除一行

       

      0,1,2

       

      將匹配的該行文字刪除, 不輸出

       

      n

       

      讀入下一行

       

      0,1,2

       

      將匹配行文字輸出,從輸入讀入下一行文字, 繼續(xù)執(zhí)行下一個指令

       

      a\

       

      加入文字

       

      0,1

       

      將文字加入到匹配行文字后輸出

       

      i\

       

      插入文字

       

      0,1

       

      將文字插入到匹配行文字前輸出

       

      c\

       

      替換文字

       

      0,1,2

       

      將文字替換匹配行文字進行輸出

       












      2). 替換或轉(zhuǎn)換命令(Substitute, transform):

      Command

       

      功能

       

      說明

       

      s

       

      模式替換

       

      找到匹配行, 進行替換操作

       

      y

       

      子元轉(zhuǎn)換

       

      找到匹配行, 進行子元轉(zhuǎn)換

       





      s命令: sed中唯一的帶參數(shù)的命令, 可以有4種參數(shù):

      g參數(shù), 在該行中, 替換所以匹配而不是只替換第一次匹配

      n 參數(shù), 在該行中, 替換第n個匹配

      p參數(shù), 對該行執(zhí)行替換, 并輸出該行文字

      w filename 參數(shù), 將替換后的該行寫入filename文件中

      , /UNIX/s/OK/YES/g, UNIX的行, 所有OK->YES

      該命令內(nèi)嵌入vi編輯器中.

      y命令: 該行中所有對應(yīng)子元進行轉(zhuǎn)換.

      , 1,5y/abc/edf/, 所以15行所有子元: a->e, b->d, c->f 轉(zhuǎn)換


      3). 輸入輸出命令:

      Command

      功能

      地址參數(shù)

      可能個數(shù)

      說明

      p

      送至輸出

      0,1,2

      遇匹配行時, 輸出pattern space 內(nèi)容

      l

      送至輸出

      0,1,2

      p類似,不同的是將鍵盤上無法輸出的字符用8進制輸出,超過72個字長的部分移到下一行

      w filename

      寫入文件

      0,1,2

      將匹配行文字寫入文件filename

      r filename

      從文件讀入

      0,1,2

      對匹配行,filename中的文字輸出














      *SED將內(nèi)部分為pattern space(工作區(qū))hold space(暫存區(qū))

      4). 多行處理命令:

      通常sed一次處理一行文字, 這些命令賦予多行處理能力

      Command

       

      功能

       

      地址參數(shù)

      可能個數(shù)

       

      說明

       

      N

       

      Next line

       

      0,1,2

       

      與匹配行時,再讀入下一行,加在當(dāng)前pattern space文字的后面

       

      D

       

      Delete first part of pattern space

       

      NO address

       

      pattern space第一個new line字母前的文字刪去,僅一個newline字母時,相當(dāng)于d 命令

       

      P

       

      Print first part

      of pattern space

       

      NO address

       

      pattern space第一個new line字母前的文字輸出

       













      5).
      存取暫存區(qū)的命令:

      pattern spacehold space文字的交互

      Command

       

      功能

       

      地址參數(shù)

      可能個數(shù)

       

      說明

       

      h

       

      pattern space拷貝到hold space

       

      0,1,2

       

      pattern space內(nèi)容拷貝到hold space

       

      H

       

      pattern space 加到hold space

       

      0,1,2

       

      pattern space內(nèi)容加到hold space

       

      g

       

      h反方向

       

      0,1,2

       

      hold space內(nèi)容拷貝到pattern space

       

      G

       

      H反方向

       

      0,1,2

       

      hold space內(nèi)容加到pattern space

       

      x

       

      交互兩個space

       


      pattern spacehold space內(nèi)容交換

       















      6).
      執(zhí)行流程控制命令:

      Command

      功能

      地址參數(shù)

      可能個數(shù)

      說明

      !

      Dont

      0,1,2

      對匹配行以外的內(nèi)容執(zhí)行命令

      {}

      Group command

      沒有

      對匹配行執(zhí)行多個命令,這些命令用{}包含

      :label


      0,1,2

      定義給命令用的label

      b label


      0,1,2

      遇匹配時,跳到label,繼續(xù)執(zhí)行下命令

      t label



      遇匹配時,先執(zhí)行一替換命令,成功則同b, 否則繼續(xù)執(zhí)行一命令















      7).
      其他命令:

      Command

       

      功能

       

      地址參數(shù)

      可能個數(shù)

       

      說明

       

      =

       

      Line number

       

      1

       

      將匹配行的行數(shù)輸出

       

      q

       

      Quit

       

      1

       

      遇到匹配時,結(jié)束sed

       







      . 常用操作舉例

      1. 將文件中所以小寫變大寫:
      y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

      2. 將包含"ERROR"的行, 替換為"This line has error"
      sed -f script.sed file1 > file2
      script.sed 內(nèi)容:
      /ERROR/c\
      This line has error

      3. 部分行的輸出與刪除
      注意: SED本身不改變原文件內(nèi)容, 刪除僅指不輸出該部分,重定向輸出為文件時,與原文件比為刪除
      sed -n '2,5p' file1 : 僅輸出文件file1的2-5行
      sed -e '2,5d' file1 : 將文件file1的2-5行刪除
      sed -e '/^#/d' file1 : 將文件file1的以#開頭的行刪除
      sed -ne '/HELLO/p' file1 : 僅輸出file1中含HELLO的行
      sed -ne '/BEGIN/,/END/p' file1 : 僅輸出file1中BEGIN與END間的部分
      首先,匹配含BEGIN的行作為塊首, 然后向后以第一次匹配的含END的行為塊尾,輸出該塊各行
      如果, 沒有匹配到BEGIN,則不輸出; 如果只匹配到BEGIN,則輸出從該行到文件尾的各行
      在匹配到BEGIN的行后面,匹配到END的前面含有的BEGIN當(dāng)作一般行,仍以第一個BEGIN為塊首
      一個文件中, 可能有好幾個這樣匹配的區(qū)域塊,都要輸出

      4. 替換操作
      sed -e 's/foo/bar/' file1 : 將file1中第一次出現(xiàn)的foo替換為bar
      sed -e 's/foo/bar/g' file1 : 將file1中所有的foo替換為bar
      sed -e '1,8s/foo/bar/g' file1 : 將file1的1-8行中所以的foo替換為bar
      sed -e '/^$/,/^END/s/foo/bar/g' file1
      首先匹配以空行為塊首,END為行首的行為塊尾的所有區(qū)域塊,
      然后將在這些區(qū)域塊中出現(xiàn)的foo替換為bar
      sed -e 's/<.*>//g' file1 : 將file1各行中,<>間的文字刪除(最大)
      is what meant ===> meant
      sed -e 's/<[^>]*.//g' file1 : 將file1各行中,<>間的文字刪除(最小)
      is what meant ===> is what meant
      注意: .*表示任意格式的任意字符 [^>]*表示任意個數(shù)的非>的字符
      sed -e 's/girl/nice & hello/g' file1 : 將file1各行中的girl替換為nice girl hello
      這里&表示前面匹配的內(nèi)容,在要替換的文字里引用
      更強的引用: 在匹配文字中用\(\)包含文字,在匹配文字中用\1到\9來引用
      sed -e 's/\(boy\) loves \(girl\)/\2 A loves \1 B/g' file1
      boy loves girl ===> girl A loves boy B'


      5.對同一對象執(zhí)行多個sed操作時的3種方法
      1). sed -e 'command1;command2;command3' file1
      三個sed命令依次作用到file1的各行
      2). sed -e 'command1' -e 'command2 file1
      跟1)類似,比1)跟保險,1)不能用的時候可以嘗試
      3). sed -f script_file file1
      一些復(fù)雜命令,必須寫到一個script 文件中





        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多