sed
stream editor,流编辑器则会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器会执行下列操作:
(1) 一次从输入中读取一行数据。
(2) 根据所提供的编辑器命令匹配数据。
(3) 按照命令修改流中的数据。
(4) 将新的数据输出到STDOUT。
--最重要,是sed的工作原理

-n 不产生命令输出,使用print 命令来完成输出
--无论匹配行是否编辑过,都不会产生输出。

使用sed的方式:
1.在命令行定义编辑器命令
2.可以使用多个编辑器命令,用分号分割
3.可以从文件中读取编辑器命令,-f

sed的替换使用方法:
替换命令在替换多行中的文本时能正常工作,但默认情况下它只替换每行中出现的第一处。
要让替换命令能够替换一行中不同地方出现的文本必须使用替换标记(substitution flag)。替换标记会在替换命令字符串之后设置。
s/pattern/replacement/flags
有4种可用的替换标记:
 数字,表明新文本将替换第几处模式匹配的地方;
 g,表明新文本将会替换所有匹配的文本;
 p,表明原先行的内容要打印出来;
 w file,将替换的结果写到文件中。

--注意替换标记可以是数字,用来指明第几处替换。没用过。

sed寻址方式:
1.数字方式的行寻址
2.文本模式过滤器

sed的行操作方法:
1.字符串替换,s
2.删除行,d
3.插入行/附加行,i/a
4.修改行,c
5.转换单个字符,y
6.打印行号,=

20 正则表达式

BRE \^$.*[]
ERE ?+{}()

\ : 转义 .*[]^${}+?|(),这些是特殊字符,需要转义
^$ : 锚字符
. : 单字符

  • : 前一字符的0或多次
    [] : 字符组

[[:alpha:]] 字母字符
alnum 字母数字
blank 空格或者制表符
digit 数字
lower 小写字母字符
print 可打印字符
punct 标点符号
space 空白字符,空格、制表、NL、FF、VT、CR
upper 大写字母字符

ERE不适合sed:
? 0次或1次

  • 至少1次
    {m,n} 至少m次,至多n次
    {m} 正好m次
    ()表达式分组