sed 技巧一例:特定位置插入

通过一例子熟悉 sed 的运用


下面命令是在修改 ~/fs/install/nzos.conf 文件, 并在 env 第一次出现的地方再添加一行 env LXC_EXTRA_PORT=5556

sed -i '0,/^env/s/^env/env LXC_EXTRA_PORT=5556\nenv/' ~/fs/install/nzos.conf


使用 -i 表示 edit files in place, 如果使用 -e 修改的内容会到标准输出


sed 要定位,用 ADDRESS 行号 (也可是范围 “起始位置, 终止位置‘),或者 /PATTERN/ 匹配,而后是编辑命令 a, i, s

#sed 'ADDRESS a
	Line which you want to append' filename

#sed '/PATTERN/ a
	Line which you want to append' filename

a: append

i: insert

s: substitute  替换


本例是插入一行,为何不用 i:insert 这是因为 insert 有个缺陷,每个配置的位置都会插入


本例是用 s: 替换, 也可能出现每个位置都被替换, 所以要很巧妙地指定范围  0, /^env/, 就是 0行和第一次 ^env 出现的地方,所以不会影响后面的行


如果同样的范围用 i:insert 则每一行都会插入,所以只有用 s:替换

原文地址:https://www.cnblogs.com/keanuyaoo/p/3301680.html