Sed流编辑器随记

来自三线的随记
Admin讨论 | 贡献2024年7月22日 (一) 15:24的版本

官方Docs(Redhat系sed): https://sed.sourceforge.io/


有如下文本 text.txt ,下述为基于此文件的使用sed进行操作的用法

L1 aabb
L2 ccdd
#L3 jjhh
L4 host_key_checking = False

sed 默认为不修改原文件模式,需要修改生效自行在命令中添加 -i 参数

字符串替换

sed "s@#L4 host_key_checking = False@host_key_checking=True@g" test.txt

@就是个分隔符,可以根据实际情况替换为其他任意字符,末尾的g选项代表同行多次出现则多次替换

指定匹配行插入或追加

在L2行前插入文字: i 选项

sed "/L2/i 556677" test.txt

在L2行后插入文字: a 选项

sed "/L2/a 556677" test.txt

添加或解除注释

指定匹配行头添加注释

sed "s/^L2/#&/" test.txt

& 为特殊字符,意为替换为前面所匹配中的内容

An ampersand (&) appearing in the replacement will be replaced by the string matching the RE.

指定匹配行头取消注释

类似正则中子字符串匹配后引用的用法

sed "s/^#\(L3\)/#\1/" test.txt