Provided by: manpages-zh_1.6.3.2-1_all bug

名稱

       sed - 文本篩選和格式轉換的流式編輯器

摘要

       sed [選項]... {script-only-if-no-other-script} [輸入文件]...

描述

       Sed是一個流式編輯器。流式編輯器是用來在輸入流(一個文件或者管道輸入)中
       完成基本文本轉換的。當在一些允許腳本編輯的編輯器中(比如ed),sed通過將
       輸入傳輸爲一個輸入來工作,這樣更高效。但是是sed的功能來過濾管道的文本並
       從其他類型的編輯器中特別識別出這些文本。

       -n, --quiet, --silent

              不自動打印模式空間的內容

       -e 腳本, --expression=腳本

              添加腳本到將要執行的命令

       -f 腳本文件, --file=腳本文件

              添加腳本文件的內容到即將執行的命令

       --follow-symlinks

              處理已存在文件時跟隨鏈接

       -i[SUFFIX], --in-place[=SUFFIX]

              編輯已存在的文件(如果提供了SUFFIX作爲後綴則做備份)

       -l N, --line-length=N

              指定'l'命令需要的自動換行長度

       --posix

              禁用所有GNU插件。

       -E, -r, --regexp-extended

              在腳本中使用擴展正則表達式(爲了可移植性,請使用符合POSIX的-E-s, --separate

              將多個文件分別看待,而非統一視作同個連續的流。

       --sandbox

              在沙箱模式下操作。

       -u, --unbuffered

              從輸入文件中讀取最少量的數據並更頻繁地刷新輸出緩衝區

       -z, --null-data

              用NUL字符分割行

       --help
              顯示這個幫助並退出

       --version
              輸出版本信息並退出

       如果沒有給出-e--expression-f,或者--file選項,
       那麼第一個非選項參數會被當作sed腳本解釋。所有餘下的參數是輸入文件的名稱;
       如果沒有指定輸入文件,那麼就會讀取標準輸入。

       GNU                     sed主頁:<http://www.gnu.org/software/sed/>。使用GNU軟件的通用幫助
       :<http://www.gnu.org/gethelp/>。Bug報告請發送電子郵件至:<bug-sed@gnu.org>。

命令摘要

       這只是爲已經知道sed命令和相關文檔(例如texinfo文檔),需要翻閱命令完整
       描述的人準備的sed命令的簡短摘要。

   零地址“命令”
       : label
              bt 命令的標籤。

       #comment
              註釋將會延長到下一個新行 (或者一個 -e 腳本片段的結尾。)

       }      一個{ }塊的閉括號。

   零或一地址命令
       =      答應當前行的行號。

       a \

       text   追加 text, text可以通過預先寫入反斜槓來嵌入新行。

       i \

       text   插入 text, text可以通過預先寫入反斜槓來嵌入新行。

       q [exit-code]
              立即退出sed腳本而不處理其他輸入,除非自動打印沒有禁用使得當前模式
              空間將會被打印。[exit-code]是GNU插件(擴展)。

       Q [exit-code]
              立即退出sed腳本而不處理其他輸入。這是一個GNU插件。

       r 文件名文件名 讀取內容並追加到最後。

       R 文件名文件名          讀取一行並追加到最後。每次調用這個命令就從文件中讀取一
              行。這是一個GNU插件。

   接受範圍地址的命令
       {      開始一個命令塊(以一個}結束)。

       b label
              程序跳轉到label處;如果label被省略,跳轉到腳本尾部。

       c \

       texttext 代替選擇的行, text 可以通過預先寫入反斜槓來嵌入新行。

       d      刪除模式空間。 開始下一個循環。

       D      如果模式空間包含新行,在d命令發佈之後開始一個新的普通循環。否則,
              刪除模式空間中的text直到新行,並且在不讀入新行的情況下,用結果的
              模式空間開始一個循環。

       h H    複製/追加模式空間到保存空間。

       g G    複製/追加保存空間到模式空間。

       l      用“直觀明確”的格式列出當前行。

       l width
              用“直觀明確”的格式列出當前行,在width字符處結束。這是一個GNU插件。

       n N    讀取/追加下一行輸入到模式空間。

       p      輸出當前的模式空間。

       P      輸出直到遇到當前模式空間的第一個嵌入的換行符。

       s/regexp/replacement/
              嘗試與模式空間匹配regexp,如果成功,用replacement代替匹配的部分
              。replacement可能包含特殊字符&來引用模式空間中匹配的部分,而特殊
              字符\1到\9則引用regexp中對應匹配的子表達式。

       t label
              自上次輸入行讀取之後並且上次執行了t或者T命令之後,如果一個s///被
              成功替換,那麼跳轉到label處;如果label被忽略,跳轉到腳本結尾。

       T label
              自上此輸入行讀取之後並借上次執行了t或者T命令之後,如果一個s///被
              成功替換,那麼跳轉到label處;如果label被忽略,跳轉到腳本結尾。這是 一個GNU插件。

       w filename
              將當前的模式空間寫入到filename中。

       W filename
              寫入當前模式空間的第一行到filename中。這是一個GNU插件。

       x      交換模式空間和保存空間的內容。

       y/source/dest/
              將模式空間中顯示爲source的字符用dest字符來寫出。

地址

       Sed命令可以沒有指定地址,這樣將會爲所有行執行命令。如果給出了一個地址,
       這樣命令就只會爲匹配此地址的行執行;如果給出了兩個地址,這樣命令將會對
       從匹配的第一個地址到第二個地址的區域的所有輸入行執行命令。
       關於地址範圍有三點:語法爲:addr1            ,           addr2(比如,地址要用逗號分開);
       addr1匹配的行一定會被接受,即使addr2選定的是更靠前的行;並且如果addr2是
       一個regexp(正則表達式),它將不會重複測試addr匹配的行。

       在地址(或地址範圍)之後,在命令之前,可以插入一個!,這個符號定義的命令
       只有在地址(地址範圍)匹配的時候才能執行。

       支持下面的地址類型:

       number 只匹配行號爲number的行。(除非-s選項在命令行中被指定,number值將
              會按照文件數漸增。)

       first~step
              匹配每一個第step行並從first開始計數。舉個栗子,``sed           -n          1~2p''將
              打印出輸入流所有奇數行,而地址2~5將匹配從第2行開始的,以5爲步長的
              行。first可以是零;這樣,sed按其爲step來操作。(這是一個插件。)

       $      匹配最近的行。

       /regexp/
              匹配符合正則表達式regexp的行。

       \cregexpc
              匹配符合正則表達式regexp的行。 其中c可以是任意字符。

       GNUsed同樣支持某些特殊2地址格式:

       0,addr2
              從“匹配了第一個地址”狀態始,直到發現addr2。這和1,                     addr2很相似,
              除了當addr2匹配了輸入的第一行,0,         addr2形式將在該範圍的結尾;而          1,
              addr2形式仍然在該範圍的開始。這種形式只有在addr2是正則表達式 的情況下才有效。

       addr1,+N
              將會匹配 addr1 和在 addr1 之後的 N 行。

       addr1,~N
              將會匹配 addr1addr1 之後的輸入行數是 N 倍的下一行。

正則表達式

       POSIX.2                       BREs應該是支持的,但是由於性能的原因,這個特性還不完全。其中
       \n序列匹配換行符,\a\t和其他序列也是類似的。-E選項開關用來選擇是否使用擴展正則
       表達式;-E選項已經由GNU sed支持了很多年,現已包含於POSIX中。

BUGS

       請將錯誤報告發送至bug-sed@gnu.org。另外,請在郵件正文中儘量包含 ``sed --version''的信息。

作者

       由   Jay   Fenlason,  Tom  Lord,  Ken  Pizzini,  和  Paolo  Bonzini寫成。  GNU  sed  主頁:
       <http://www.gnu.org/software/sed/>.           使用          GNU          軟件的一般性手冊:
       <http://www.gnu.org/gethelp/>.  E-mail bug 報告到: <bug-sed@gnu.org>.

版權

       Copyright  ©  2017  Free  Software  Foundation, Inc.  License GPLv3+: GNU GPL version 3 or
       later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is NO  WARRANTY,
       to the extent permitted by law.

參見

       awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, 任何和sed相關的書籍,
       sed常見問題(http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/sed 的完整文檔是作爲Texinfo手冊維護的。如果infosed程序正確的安裝, 可以執行

              info sed

       命令來訪問完整的手冊。

       本頁面中文版由中文 man 手冊頁計劃提供。

       翻譯人員:Means Lee
       翻譯日期:2017-05-15
       原始軟件:sed
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh