流編輯器 sed 學習筆記

2021-05-07 14:23:14 字數 2557 閱讀 6441

學習手冊 emacs info

1。sed 乙個流編輯器。

它能在乙個檔案或管道上進行基本的文字操作。

2。如何呼叫sed?

sed options... [script] [inputfile...]

沒有說明inputfile時,或者inputfile是「-」,輸入流為標準輸入

命令列選項(options)

--version

--help

-n 或者--quiet或者--silent

取消自動列印功能,只列印 p 命令所指定的

-i[suffix]或者--in-place[=suffix]

原地編輯,將編輯結果寫回原始檔,suffix指明原始檔如何備份,缺少的話就不備份

-l n或者--line-length=n指定較長的字元行如何回折[wrap],預設是70個字元

--posix

遵從posix標準

-r或者--regexp-extended

使用拓展的正規表示式,即'egrep'命令接受的

-s或者--seperate

預設情況下,sed將所有輸入檔案當作乙個連續的流,這個選項允許使用者將他們看作分立的檔案

-u或者--unbuffered

-e script或者--expression=script

將命令新增到命令集中,即增加乙個命令操作

-f script-file或者--file=script-file

將script-file中的命令新增到命令集中

3。sed programs

sed如何工作?

sed維持這兩個快取 active _pattern_ space 和 auxiliary _hold_ space。開始的時候他們都是空的。

sed重複著乙個工作環:首先,從輸入流中讀入一行,去掉尾端的換行符,並把它放到pattern space裡面。

然後執行相應的命令集。命令關聯著條件,只有條件滿足,才能執行命令。當執行完最後乙個命令時,如果沒有-n選項,pattern space裡的內容會列印到輸出流,並把開始時去掉的換行符添上。然後開始下乙個迴圈,讀入下一行。

sed如何確定要處理的範圍?或者說,定址?

定址方式:

每種定址方式都確定一系列行的範圍。在定址串後面跟乙個感嘆號!表示反選。

各種定址方式:

number

直接指定第number行

first~step

從第first行開始,每隔step行選取一行。

匹配當前檔案的最後一行

/regexp/              /%regexp%

選擇匹配regexp正規表示式的行

/regexp/i           /regxp/m

i表示忽略大小寫, m表示多行。

正規表示式總覽:

普通字元對應它們自身

*匹配零或多個它前面的個體

'/+' 和*差不多,但至少匹配一次

'/?' 和*差不多,但匹配零或著一次

'/' 匹配i次

'/' 匹配i到j次

'/'匹配至少i次

'/(regexp/)' 將regexp作為乙個整體

'.' 匹配任何字元

'^' 匹配行開始

'$' 匹配行結束

'[list]'

'[^list]'

匹配list中的任意字元,加上^表示匹配不是list中的任意字元

『regexp/|regexp『匹配至少其中乙個表示式

『regexp1regexp2』匹配兩個表示式

』/digit『   向前引用第digit個括號表示式

'/n' 匹配換行符

'/char'  字元轉義:  '$', '*', '.', '[', '/', '^'

例子:『abcdef' 匹配 'abcdef'

'a*b' 匹配以b結尾的字串,前面有零或多個a

'a/?b' 匹配 'b' 或者 'ab'

'//$'匹配以右斜線結尾的字串

'^/(.*/)/n/1$' 匹配乙個字串,該字串包含兩個相等的被換行符分割的字串

經常使用的命令

'#' 注釋一行

'q [exit-code] 退出

'p' 列印pattern space

'n'

' 命令集

s命令

完整格式

s/regexp/replacement/flags 

其中/可由其它字元代替,該字元在regexp或者replacement中必須轉義

replacement可以使用/n引用regexp匹配的第n部分

replacement中

/l  將字元轉化為小寫,知道遇到 /e 或者/u

/l    將後面乙個字元小寫

/u   將字元轉化為小寫,知道遇到 /e 或者/l

/u   將後面乙個字元大寫

flags

g   應用於所有的匹配,不僅僅是預設的第乙個

number  應用第number個

p 列印出來

i i   大小寫不敏感

m m  多行匹配

sed流編輯器

sed預設不編輯原始檔,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間中的內容列印至螢幕。sed options addresscommand file.用行,和命令一起來操作文字 options n 靜默顯示,不再顯示模式空間中的內容 i 直接修改原檔案 e 指令碼 e指令碼 可以同時執...

sed 流編輯器

sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕 sed options addresscommand file n 靜默模式,不再預設顯示模式空間中的內容 i 直接修改原檔案 e script e script 可以同時執行多個指令碼 f pa...

sed(流編輯器)詳解

行編輯器 全屏編輯器 vi sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕。sed options addresscommand file options n 靜默模式,不再預設顯示模式空間中的內容 i 直接修改原檔案 i.bak 備份原檔案 ...