.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
.TH SED "1" "2017年2月" "sed 4.4" "使用者命令"
.SH 名稱
sed \- 文字篩選和格式轉換的流式編輯器
.SH 摘要
.B sed
[\fI選項\fR]... \fI{script-only-if-no-other-script} \fR[\fI輸入檔案\fR]...
.SH 描述
.ds sd \fIsed\fP
.ds Sd \fISed\fP
\*(Sd是一個流式編輯器。流式編輯器是用來在輸入流(一個檔案或者管道輸入)中
完成基本文字轉換的。當在一些允許指令碼編輯的編輯器中(比如\fIed\fP),\*(sd透過將
輸入傳輸為一個輸入來工作,這樣更高效。但是是\*(sd的功能來過濾管道的文字並
從其他型別的編輯器中特別識別出這些文字。
.HP
\fB\-n\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
.IP
不自動列印模式空間的內容
.HP
\fB\-e\fR 指令碼, \fB\-\-expression\fR=\fI指令碼\fR
.IP
新增指令碼到將要執行的命令
.HP
\fB\-f\fR 指令碼檔案, \fB\-\-file\fR=\fI指令碼檔案\fR
.IP
新增指令碼檔案的內容到即將執行的命令
.HP
\fB\-\-follow\-symlinks\fR
.IP
處理已存在檔案時跟隨連結
.HP
\fB\-i[SUFFIX]\fR, \fB\-\-in\-place\fR[=\fISUFFIX\fR]
.IP
編輯已存在的檔案(如果提供了SUFFIX作為字尾則做備份)
.HP
\fB\-l\fR N, \fB\-\-line\-length\fR=\fIN\fR
.IP
指定'l'命令需要的自動換行長度
.HP
\fB\-\-posix\fR
.IP
禁用所有GNU外掛。
.HP
\fB\-E\fR, \fB\-r\fR, \fB\-\-regexp\-extended\fR
.IP
在指令碼中使用擴充套件正則表示式(為了可移植性,請使用符合POSIX的\fB\-E\fR)
.HP
\fB\-s\fR, \fB\-\-separate\fR
.IP
將多個檔案分別看待,而非統一視作同個連續的流。
.HP
\fB\-\-sandbox\fR
.IP
在沙箱模式下操作。
.HP
\fB\-u\fR, \fB\-\-unbuffered\fR
.IP
從輸入檔案中讀取最少量的資料並更頻繁地重新整理輸出緩衝區
.HP
\fB\-z\fR, \fB\-\-null\-data\fR
.IP
用NUL字元分割行
.TP
\fB\-\-help\fR
顯示這個幫助並退出
.TP
\fB\-\-version\fR
輸出版本資訊並退出
.PP
如果沒有給出\fB\-e\fR,\fB\-\-expression\fR,\fB\-f\fR,或者\fB\-\-file\fR選項,
那麼第一個非選項引數會被當作sed指令碼解釋。所有餘下的引數是輸入檔案的名稱;
如果沒有指定輸入檔案,那麼就會讀取標準輸入。
.PP
GNU sed主頁:。使用GNU軟體的通用幫助
:。Bug報告請傳送電子郵件至:。
.SH "命令摘要"
這只是為已經知道\*(sd命令和相關文件(例如texinfo文件),需要翻閱命令完整
描述的人準備的\*(sd命令的簡短摘要。
.SS
零地址“命令”
.TP
.RI :\ label
.B b
和
.B t
命令的標籤。
.TP
.RI # comment
註釋將會延長到下一個新行 (或者一個
.B -e
指令碼片段的結尾。)
.TP
}
一個{ }塊的閉括號。
.SS
零或一地址命令
.TP
=
答應當前行的行號。
.TP
a \e
.TP
.I text
追加
.IR text ,
text可以透過預先寫入反斜槓來嵌入新行。
.TP
i \e
.TP
.I text
插入
.IR text ,
text可以透過預先寫入反斜槓來嵌入新行。
.TP
q [\fIexit-code\fR]
立即退出\*(sd指令碼而不處理其他輸入,除非自動列印沒有禁用使得當前模式
空間將會被列印。[\fIexit-code\fR]是GNU外掛(擴充套件)。
.TP
Q [\fIexit-code\fR]
立即退出\*(sd指令碼而不處理其他輸入。這是一個GNU外掛。
.TP
.RI r\ 檔名
從
.IR 檔名
讀取內容並追加到最後。
.TP
.RI R\ 檔名
從
.IR 檔名
讀取一行並追加到最後。每次呼叫這個命令就從檔案中讀取一
行。這是一個GNU外掛。
.SS
接受範圍地址的命令
.TP
{
開始一個命令塊(以一個}結束)。
.TP
.RI b\ label
程式跳轉到\fIlabel\fR處;如果\fIlabel\fR被省略,跳轉到指令碼尾部。
.TP
c \e
.TP
.I text
用
.IR text
代替選擇的行,
.IR text
可以透過預先寫入反斜槓來嵌入新行。
.TP
d
刪除模式空間。
開始下一個迴圈。
.TP
D
如果模式空間包含新行,在d命令釋出之後開始一個新的普通迴圈。否則,
刪除模式空間中的text直到新行,並且在不讀入新行的情況下,用結果的
模式空間開始一個迴圈。
.TP
h H
複製/追加模式空間到儲存空間。
.TP
g G
複製/追加儲存空間到模式空間。
.TP
l
用“直觀明確”的格式列出當前行。
.TP
.RI l\ width
用“直觀明確”的格式列出當前行,在\fIwidth\fR字元處結束。這是一個GNU外掛。
.TP
n N
讀取/追加下一行輸入到模式空間。
.TP
p
輸出當前的模式空間。
.TP
P
輸出直到遇到當前模式空間的第一個嵌入的換行符。
.TP
.RI s/ regexp / replacement /
嘗試與模式空間匹配\fIregexp\fR,如果成功,用\fIreplacement\fR代替匹配的部分
。\fIreplacement\fR可能包含特殊字元\fB&\fR來引用模式空間中匹配的部分,而特殊
字元\e1到\e9則引用\fIregexp\fR中對應匹配的子表示式。
.TP
.RI t\ label
自上次輸入行讀取之後並且上次執行了t或者T命令之後,如果一個s///被
成功替換,那麼跳轉到\fIlabel\fR處;如果\fIlabel\fR被忽略,跳轉到指令碼結尾。
.TP
.RI T\ label
自上此輸入行讀取之後並借上次執行了t或者T命令之後,如果一個s///被
成功替換,那麼跳轉到\fIlabel\fR處;如果\fIlabel\fR被忽略,跳轉到指令碼結尾。這是
一個GNU外掛。
.TP
.RI w\ filename
將當前的模式空間寫入到\fIfilename\fR中。
.TP
.RI W\ filename
寫入當前模式空間的第一行到\fIfilename\fR中。這是一個GNU外掛。
.TP
x
交換模式空間和儲存空間的內容。
.TP
.RI y/ source / dest /
將模式空間中顯示為\fIsource\fR的字元用\fIdest\fR字元來寫出。
.SH
地址
\*(Sd命令可以沒有指定地址,這樣將會為所有行執行命令。如果給出了一個地址,
這樣命令就只會為匹配此地址的行執行;如果給出了兩個地址,這樣命令將會對
從匹配的第一個地址到第二個地址的區域的所有輸入行執行命令。
關於地址範圍有三點:語法為:\fIaddr1 , addr2\fR(比如,地址要用逗號分開);
\fIaddr1\fR匹配的行一定會被接受,即使\fIaddr2\fR選定的是更靠前的行;並且如果\fIaddr2\fR是
一個\fIregexp\fR(正則表示式),它將不會重複測試\fIaddr\fR匹配的行。
.PP
在地址(或地址範圍)之後,在命令之前,可以插入一個\fB!\fR,這個符號定義的命令
只有在地址(地址範圍)\fB不\fR匹配的時候才能執行。
.PP
支援下面的地址型別:
.TP
.I number
只匹配行號為\fInumber\fR的行。(除非\fB-s\fR選項在命令列中被指定,number值將
會按照檔案數漸增。)
.TP
.IR first ~ step
匹配每一個第\fIstep\fR行並從\fIfirst\fR開始計數。舉個栗子,``sed -n 1~2p''將
打印出輸入流所有奇數行,而地址2~5將匹配從第2行開始的,以5為步長的
行。\fIfirst\fR可以是零;這樣,\*(sd按其為\fIstep\fR來操作。(這是一個外掛。)
.TP
$
匹配最近的行。
.TP
.RI / regexp /
匹配符合正則表示式\fIregexp\fR的行。
.TP
.BI \fR\e\fPc regexp c
匹配符合正則表示式\fIregexp\fR的行。
其中\fBc\fR可以是任意字元。
.PP
GNU\*(sd同樣支援某些特殊2地址格式:
.TP
.RI 0, addr2
從“匹配了第一個地址”狀態始,直到發現\fIaddr2\fR。這和\fI1, addr2\fR很相似,
除了當\fIaddr2\fR匹配了輸入的第一行,\fI0, addr2\fR形式將在該範圍的結尾;而
\fI1, addr2\fR形式仍然在該範圍的開始。這種形式只有在\fIaddr2\fR是正則表示式
的情況下才有效。
.TP
.IR addr1 ,+ N
將會匹配
.I addr1
和在
.IR addr1
之後的
.I N
行。
.TP
.IR addr1 ,~ N
將會匹配
.I addr1
和
.I addr1
之後的輸入行數是
.IR N
倍的下一行。
.SH "正則表示式"
POSIX.2 BREs\fI應該\fR是支援的,但是由於效能的原因,這個特性還不完全。其中
\fB\en\fR序列匹配換行符,\fB\ea\fR、\fB\et\fR和其他序列也是類似的。\fI-E\fP選項開關用來選擇是否使用擴充套件正則
表示式;-E選項已經由GNU sed支援了很多年,現已包含於POSIX中。
.SH BUGS
.PP
請將錯誤報告發送至\fBbug-sed@gnu.org\fR。另外,請在郵件正文中儘量包含
``sed --version''的資訊。
.SH 作者
由 Jay Fenlason, Tom Lord, Ken Pizzini,
和 Paolo Bonzini寫成。
GNU sed 主頁: .
使用 GNU 軟體的一般性手冊: .
E-mail bug 報告到: .
.SH 版權
Copyright \(co 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
.br
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
.SH "參見"
.BR awk (1),
.BR ed (1),
.BR grep (1),
.BR tr (1),
.BR perlre (1),
sed.info,
任何和\*(sd相關的書籍,
.na
\*(sd常見問題(http://sed.sf.net/grabbag/tutorials/sedfaq.txt),
http://sed.sf.net/grabbag/。
.PP
.B sed
的完整文件是作為Texinfo手冊維護的。如果\fBinfo\fR和\fBsed\fR程式正確的安裝,
可以執行
.IP
.B info sed
.PP
命令來訪問完整的手冊。
.SH "跋"
.br
本頁面中文版由中文 man 手冊頁計劃提供。
.PP
翻譯人員:Means Lee
.br
翻譯日期:2017-05-15
.br
原始軟體:sed
.br
.br
中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR