sed
行编辑器, 过滤与转换文本
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
script: 地址界定编辑命令
常用选项
-n 不输出模式空间中的内容至屏幕
-e script --expression-script : 多点编辑
-f /PATH/SED_SCRIPT 每行一个编辑命令
-r --regexp-extended 支持使用扩展正则表达式
-i --in 直接编辑原文件
地址界定
空地址 对全文进行处理
单地址
指定行
/pattern/ 被此模式匹配到的每一行
地址范围
,#
,+#
,/part1/
/part1/,/part2/
$ 最后一行
步进 ~
1-2 所有奇数行
2-2 所有偶数行
编辑命令
d 删除
p 显示模式空间中的内容
a \text 在行后面追加文本"text" 支持使用\n实现多行追加
i \text 在行前面插入文本"text" 支持使用\n实现多行追加
c \text 在匹配到的行替换为此处定的文本"text"
w /PATH/TO/FILE 保存模式空间匹配到的行至指定的文件中
r /PATH/TO/FILE 读取指定文件的内容至模式匹配到的行后面,文件合并
= 为模式匹配到的行打印行号
! 条件取反 地址定界!编辑命令
s/// 查找替换,其他分隔符可自行指定 常用的有要s@@@,s###等
替换标记
g 全局替换
w /path/to/file 将替换成功的结果保存到指定的文件中
p 显示替换成功的行
高级编辑命令
h: 把模式空间内容覆盖至保持空间中
H: 把模式空间内容追加至保持空间追加中
g: 把保持空间内容覆盖至模式空间
G: 把保持空间内容追加至模式空间
x: 保持空间与模式空间内容互换
n: 覆盖读取匹配到的行的下一行至模式空间
N: 追加读取匹配到的行的下一行至模式空间
d: 删除模式空间中的行
D: 删除多行模式空间中的所有行
pattern space 模式空间
set 逐行从文件读取一行文本,放到pattern space里
hold space
Last updated
Was this helpful?