sed流式編輯器 sed是一個流式編輯器(stream editor)。 在sed中,pattern space和hold space為兩個緩衝區,開始時資料由標準輸入被讀入pattern space,經過處理輸出到標準輸出。hold space只是一個輔助處理的緩衝區,有些命令可以對hold space緩衝區操作,比如H,h,g,G等。 sed [OPTION]... {script-only-if-no-other-script} [input-file]... 這是命令的標準格式: 描述:sed是一個流式編輯器,流式編輯器用來處理對一個輸入 流進行處理。就像很多運行指令碼編輯的編輯器一樣,sed只處理一行輸入,因此更高效。但是sed在管道中過濾文本的作用使它明顯區別於其他類型編輯器。 -n, --quiet, --silent 抑制pattern space的自動輸出功能 -e script, --expression=script 把script加入到執行命令中 -f script-file, --file=script-file 命令輸入來源為檔案 -i[SUFFIX], --in-place[=SUFFIX] 原地編輯 -l N, --line-length=N 設定自動換行的長度 --posix 關閉所有GNU擴充 -r, --regexp-extended 應用擴充的Regex -s, --separate 把多個檔案當做多個流 -u, --unbuffered 每次從檔案讀入更少資料更頻繁的flush到輸出 如果沒有-e 或者-f選項,第一個非選項參數作為sed指令碼運行。其餘所有的參數都為輸入檔案,如果沒有輸入檔案,從標準輸入讀取。 COMMAND SYNOPSIS這隻是一個sed的簡明教程 零地址命令: :label 為 b 和 t命令用的label #comment 直到下一行命令都為注釋(或者-e 命令的末尾) 零或者一個地址命令: = 列印當前行號 a text: 加入text,可以用反斜線換行 i text: 插入text,可以用反斜線換行 q 立即退出sed指令碼不處理任何更多的輸入,但如果沒有禁用自動列印,將列印當前模式空間。 Q 立即退出sed指令碼不處理任何更多的輸入 r filename 加入從filename讀入的text R filename 加入從filaname讀入一行資料 Commands which accept address rangesb label Branch to label; if label is omitted, branch to end of script. 跳轉到label執行,如果沒有就到最後 t label If a s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script. 自從上次輸入或者上次T/t命令後s替換命令執行成功,跳轉到label,沒喲label,到最後 T label If no s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script.自從上次輸入或者上次T/t命令後s替換命令執行不成功,跳轉到label,沒喲label,到最後 c text: 替換text,可以用反斜線換行 d 從下一個迴圈開始刪除pattern space D刪除pattern space的第一行,如果其中有資料繼續處理,否則從讀取輸入 h H Copy/append pattern space to hold space. g G Copy/append hold space to pattern space. x Exchange the contents of the hold and pattern spaces. l List out the current line in a ''visually unambiguous'' form.明確列出當前行號 n N Read/append the next line of input into the pattern space. p Print the current pattern space. P Print up to the first embedded newline of the current pattern space. w filename Write the current pattern space to filename. W filename Write the first line of the current pattern space to filename.s/regexp/replacement/ Attempt to match regexp against the pattern space. If successful, replace that por- tion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.用replacement替換regexp匹配的欄位,replacement中可能包含&字元代指與regexp匹配的字串,用\1到\9代指相應匹配的子段 y/source/dest/ Transliterate the characters in the pattern space which appear in source to the cor- responding character in dest. Addresses如果一個地址參數也沒有,對所有行進行處理,如果有一個地址,對哪一行進行處理,如果有兩個地址,對兩行之間的行處理,哪怕參數2小於參數1,如果地址2是一個Regex,不會匹配第一個參數行。 前面加!符號,反向選擇 number 具體一行 first~step 從first行開始的步長為step的行 $ 最後一行 /regexp/ 與此Regex匹配的一行 \cregexpc c可以為任何字元,同上,只不過把換一種形式 addr1,+N 從addr1開始的N行 addr1,~N 從addr1開始的N的整數倍行