您的位置:首页 > 其它

流编辑器 sed 学习笔记

2009-10-01 10:31 232 查看
学习手册 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次

'/{I,J/}' 匹配I到J次

'/{I,/}'匹配至少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] 退出

'd' 立即删除pattern aspace

'p' 打印pattern space

'n'

'{ COMMANDS } 命令集

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 多行匹配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: