流编辑器 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 多行匹配
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 多行匹配
相关文章推荐
- SED,AWK学习笔记Part 2-----sed编辑器
- shell编程学习笔记之sed编辑器
- Linux学习笔记-sed编辑器基础
- sed编辑器学习笔记
- shell脚本学习笔记 (流编辑器sed)
- shell脚本学习笔记 (流编辑器sed)
- SED,AWK学习笔记Part 2-----sed编辑器[转]
- 转――[Shell学习笔记] Shell正则表达式与grep、sed、awk的特点
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第10章 vim 程序编辑器
- Sed学习笔记
- VIM编辑器基础学习笔记
- 【转】sed 学习笔记
- 瓦片地图学习笔记一 编辑器使用及地图添加,对象层应用
- Sed学习笔记[zt]
- Linux学习笔记:4.Vim编辑器(1)
- vim编辑器学习笔记
- LVS的持久连接和awk/sed/grep的学习笔记
- [转]Sed学习笔记
- eclipse编辑器中,如何配置编译命令-lm,使math.h 和pow(a,b)函数生效——C语言学习笔记4
- sed命令学习笔记