pattern space // 文本中每行内容都会进入到pattern space中, 若是匹配到了,就会进入到右分支, 若是没有匹配到,则进入左分支。正则表达式
hold space // 就是已经被模式匹配到, 而且编辑后保存的内容就是hold space 中.ide
默认状况下,当没有被匹配以后,没有匹配到内容也会被输出到屏幕之上, 一旦被模式匹配上, 就分为两种操做, 一种是标准输出, 另一种则是编辑。测试
sed 用法: sed [option]... ‘script’ inputfilespa
选项[option]:3d
-n: 不输出模式空间的内容(屏蔽自动输出)orm
-e: 多点编辑对象
-f: 文件,文件中放地址命令blog
-r: 支持扩展的正则表达式图片
-i: 在文件中直接编辑ip
‘script’ == ‘地址命令’
地址和命令之间没有任何符号。
地址定界:
(1). 不给地址,直接操做, 对全文操做
(2) 单地址
1>. #
2>. /pattern/ 被此处模式匹配到的每一行
3>.$ 表示最后一行
(3) 地址范围
1>. #,# 两个指定行中的全部行,包括两个指定行
2>.#,+# +# 同上
3>./part1/,/part2/ 两次匹配行之间的全部行,包括匹配到的行
4>.#,/part/ 指定行到匹配的行
(4)~ 步进
1~2 全部的奇数行
2~2 全部的偶数行
基础编辑指令:
(1). d 删除匹配到的行
(2). p 显示匹配到的行 通常要与-n一块儿用,不然被匹配到行会显示两次
(3). c 替换匹配的字符串或者行
(4). a 在匹配到行尾追加内容
(5) i 在匹配到行首添加内容
(6) w /path/to/file 将sed匹配编辑后的内容保存到另一份文件中
(7) r /path/to/file 将指定文件的内容追加到匹配到行以后
(8) = 打印行号
(9) ! 模式空间中匹配行取反处理
替换操做: 删除或者编辑行中部份内容的时候,要使用替换操做
s/匹配到到内容/替换的内容/替换标记
替换标记:
g: 全局替换(整行都替换) 默认只替换第一个匹配到的内容
p: 显示替换成功的行
w: 将替换成功的行指定到模文件中 w /path/to/file
高级编辑指令:
高级编辑指令其实就是将模式空间和保持空间中的内容来回互调,实现一些高大上的指令效果。
选项:
高级指令:
以文件c 做为测试:
sed -n 'n;p' c
显示偶数行
sed '1!G;h;$!d' c
倒序
sed '$!N;$!D' c
只显示最后两行
sed '$!d' c
显示最后一行
sed ‘G’ c
每行后面加空行
sed ‘g’ c
全变成空行
sed‘ /^$/d;G’d
把全部空格先删了, 而后再来一个空格
以文件d做为测试对象:
测试结果:
sed 'n;d' c
显示奇数行
sed -n '1!G;h;$p' c
逆序