sed stream EDite
作为行编辑器,对文本文件进行编辑(以行为单位进行编辑)
注意:sed编辑文件 ,却不改变原文件;
sed的工作原理:
指定一个文本文件,一次读取文本文件中每行内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换,删除,打印,修改,保存等等)
用法:
sed [option] ....{script-only-if-no-other-script} [input-file] ...
sed [参数] "sed自己独立的用法格式的语句" [文本文件]
常见选项
-n 拒绝默认显示
-r 指定使用扩展的正则表达式
1、所有的 都不要了 2、| 或者
-e script for while if
-f 指定脚本文件
-l 指定文本换行的长度
-i 直接修改文件内容(建议不要使用)
地址定界方式
1、数字指定步长
sed -n '1~3s'文件
2、直接匹配数值
3、$指定行尾
sed -n '10,$p'文件
4、/正则/
sed -n '/k{5,}/,$p'abc
5、0,addr
addr 可以为数字/$/正则表达式
sed -n'0,/k{5,}/p' abc
6、addr,+N
配置addr行到,addr后N行
sed -n '/fd/,+5p' abc
*常见命令
p print 打印(默认在屏幕上显示出来)建议和-n一起使用
c 替换行
d 删除
sed “1,3d” abc
n N 读取/添加 模式匹配到的行的下一行内容,在对其进行操作
w 保存文件内容到一个新的文件
*s*文本内容替换
语法格式:s/pattern/字符串/
中间的/可以替换为任意一个特殊字符 例如: $#### $@@@ $%%%%%
g 全部
12 和正则表达式的分组相同,实现反向应用;
指定某一个匹配项进行修改替换
&调用前面匹配的内容
sed “s/r...t/&er/g” 文件
给定一个目录,取出其目录名:
--- dirname ----取出文件路径的路径部分
--- base ---- 取出文件路径的文件名部分
sed高级空间
模式空间 --- hold space"占有空间"