pattern space // 文本中每行内容都会进入到pattern space中, 如果匹配到了,就会进入到右分支, 如果没有匹配到,则进入左分支。
hold space // 就是已经被模式匹配到, 并且编辑后保存的内容就是hold space 中.
默认情况下,当没有被匹配之后,没有匹配到内容也会被输出到屏幕之上, 一旦被模式匹配上, 就分为两种操作, 一种是标准输出, 另外一种则是编辑。
sed 用法: sed [option]… ‘script’ inputfile
选项[option]:
-n: 不输出模式空间的内容(屏蔽自动输出
-e: 多点编辑
-f: 文件,文件中放地址命令
-r: 支持扩展的正则表达式
-i: 在文件中直接编辑
‘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
高级编辑指令:
高级编辑指令其实就是将模式空间和保持空间中的内容来回互调,实现一些高大上的指令效果。
选项:
原创文章,作者:458813466,如若转载,请注明出处:http://www.178linux.com/34960